MICROCHIP MPLAB XC8 C कम्पाइलर सफ्टवेयर 

MICROCHIP MPLAB XC8 C कम्पाइलर सफ्टवेयर

यस कागजातमा MICROCHIP AVR यन्त्रहरूलाई लक्षित गर्दा MPLAB XC8 C कम्पाइलरसँग सम्बन्धित महत्त्वपूर्ण जानकारीहरू समावेश छन्।
कृपया यो सफ्टवेयर चलाउनु अघि यसलाई पढ्नुहोस्। यदि तपाईंले 8-बिट PIC यन्त्रहरूका लागि कम्पाइलर प्रयोग गर्दै हुनुहुन्छ भने PIC कागजातका लागि MPLAB XC8 C कम्पाइलर रिलिज नोटहरू हेर्नुहोस्।

सामग्री लुकाउनुहोस्

माथिview

परिचय

Microchip MPLAB® XC8 C कम्पाइलरको यो रिलीजमा धेरै नयाँ सुविधाहरू, बग समाधानहरू, र नयाँ उपकरण समर्थन समावेश छ।

निर्माण मिति

यस कम्पाइलर संस्करणको आधिकारिक निर्माण मिति 3 जुलाई 2022 हो।

अघिल्लो संस्करण

अघिल्लो MPLAB XC8 C कम्पाइलर संस्करण 2.39 थियो, एक कार्यात्मक सुरक्षा कम्पाइलर, 27 जनवरी 2022 मा निर्मित। अघिल्लो मानक कम्पाइलर 2.36 जनवरी 27 मा निर्मित संस्करण 2022 थियो।

कार्यात्मक सुरक्षा पुस्तिका

MPLAB XC कम्पाइलरहरूको लागि कार्यात्मक सुरक्षा म्यानुअल कागजात प्याकेजमा उपलब्ध छ जब तपाइँ कार्यात्मक सुरक्षा इजाजतपत्र खरिद गर्नुहुन्छ।

कम्पोनेन्ट लाइसेन्स र संस्करणहरू

AVR MCUs उपकरणहरूको लागि MPLAB® XC8 C कम्पाइलर GNU जनरल पब्लिक इजाजतपत्र (GPL) अन्तर्गत लेखिएको र वितरण गरिएको छ जसको अर्थ यसको स्रोत कोड स्वतन्त्र रूपमा वितरण गरिएको छ र जनतालाई उपलब्ध छ। GNU GPL अन्तर्गतका उपकरणहरूको लागि स्रोत कोड माइक्रोचिपबाट अलग रूपमा डाउनलोड गर्न सकिन्छ webसाइट। तपाईले GNU GPL मा पढ्न सक्नुहुन्छ file तपाईंको स्थापना डाइरेक्टरीको उपनिर्देशिका स्थित नाम। GPL अन्तर्निहित सिद्धान्तहरूको सामान्य छलफल यहाँ पाउन सकिन्छ। हेडरको लागि समर्थन कोड प्रदान गरियो files, लिङ्कर स्क्रिप्टहरू, र रनटाइम पुस्तकालयहरू स्वामित्व कोड हुन् र GPL अन्तर्गत कभर छैनन्।

यो कम्पाइलर GCC संस्करण 5.4.0, binutils संस्करण 2.26 को कार्यान्वयन हो, र avr-libc संस्करण 2.0.0 प्रयोग गर्दछ।

प्रणाली आवश्यकताहरू

MPLAB XC8 C कम्पाइलर र यसले प्रयोग गर्ने इजाजतपत्र सफ्टवेयर निम्नका 64-बिट संस्करणहरू सहित विभिन्न अपरेटिङ सिस्टमहरूको लागि उपलब्ध छन्: Microsoft Windows 10 को व्यावसायिक संस्करणहरू; Ubuntu 18.04; र macOS 10.15.5। विन्डोजका लागि बाइनरीहरू कोड-साइन गरिएको छ। म्याक ओएसका लागि बाइनरीहरू कोड-हस्ताक्षरित र नोटरी गरिएका छन्।

यदि तपाइँ नेटवर्क इजाजतपत्र सर्भर चलाइरहनुभएको छ भने, कम्पाइलरहरूद्वारा समर्थित अपरेटिङ सिस्टम भएका कम्प्युटरहरू मात्र लाइसेन्स सर्भर होस्ट गर्न प्रयोग गर्न सकिन्छ। xclm संस्करण २.० को रूपमा, नेटवर्क इजाजतपत्र सर्भर माइक्रोसफ्ट विन्डोज सर्भर प्लेटफर्ममा स्थापना गर्न सकिन्छ, तर इजाजतपत्र सर्भरलाई अपरेटिङ सिस्टमको सर्भर संस्करणमा चलाउन आवश्यक छैन।

उपकरणहरू समर्थित

यो कम्पाइलरले रिलीजको समयमा ज्ञात सबै 8-बिट AVR MCU उपकरणहरूलाई समर्थन गर्दछ। सबै समर्थित यन्त्रहरूको सूचीको लागि (कम्पाइलरको कागजात निर्देशिकामा) हेर्नुहोस्। यी files ले प्रत्येक उपकरणको लागि कन्फिगरेसन बिट सेटिङहरू पनि सूचीबद्ध गर्दछ।

संस्करण र लाइसेन्स अपग्रेडहरू

MPLAB XC8 कम्पाइलरलाई इजाजतपत्र प्राप्त (PRO) वा बिना इजाजतपत्र (नि:शुल्क) उत्पादनको रूपमा सक्रिय गर्न सकिन्छ। तपाइँ तपाइँको कम्पाइलर लाइसेन्स गर्न को लागी एक सक्रियता कुञ्जी किन्न आवश्यक छ। एक इजाजतपत्रले नि: शुल्क उत्पादनको तुलनामा उच्च स्तरको अनुकूलनको लागि अनुमति दिन्छ। एक बिना इजाजत पत्र कम्पाइलर बिना लाइसेन्स अनिश्चित कालको लागि सञ्चालन गर्न सकिन्छ।

एक MPLAB XC8 कार्यात्मक सुरक्षा कम्पाइलर माइक्रोचिपबाट खरिद गरिएको कार्यात्मक सुरक्षा इजाजतपत्रको साथ सक्रिय हुनुपर्छ। कम्पाइलर यो इजाजतपत्र बिना काम गर्दैन। एक पटक सक्रिय भएपछि, तपाइँ कुनै पनि अप्टिमाइजेसन स्तर चयन गर्न सक्नुहुन्छ र सबै कम्पाइलर सुविधाहरू प्रयोग गर्न सक्नुहुन्छ। MPLAB XC कार्यात्मक सुरक्षा कम्पाइलरको यो रिलीजले नेटवर्क सर्भर इजाजतपत्र समर्थन गर्दछ।
इजाजतपत्र प्रकारहरू र इजाजतपत्रको साथ कम्पाइलरको स्थापना बारे जानकारीको लागि MPLAB XC C कम्पाइलरहरू (DS50002059) स्थापना र लाइसेन्सिङ कागजात हेर्नुहोस्।

स्थापना र सक्रियता

यो कम्पाइलरसँग समावेश गरिएको नवीनतम इजाजतपत्र प्रबन्धकको बारेमा महत्त्वपूर्ण जानकारीको लागि माइग्रेसन मुद्दाहरू र सीमाहरू खण्डहरू पनि हेर्नुहोस्।
यदि MPLAB IDE प्रयोग गर्दै हुनुहुन्छ भने, यो उपकरण स्थापना गर्नु अघि नवीनतम MPLAB X IDE संस्करण 5.0 वा पछिको स्थापना गर्न निश्चित हुनुहोस्। कम्पाइलर स्थापना गर्नु अघि IDE छोड्नुहोस्। .exe (Windows), .run (Linux) वा एप (macOS) कम्पाइलर स्थापनाकर्ता अनुप्रयोग चलाउनुहोस्, जस्तै XC8-1.00.11403-windows.exe र स्क्रिनमा निर्देशनहरू पालना गर्नुहोस्।
पूर्वनिर्धारित स्थापना निर्देशिका सिफारिस गरिएको छ। यदि तपाइँ लिनक्स प्रयोग गर्दै हुनुहुन्छ भने, तपाइँले टर्मिनल र रूट खाताबाट कम्पाइलर स्थापना गर्नुपर्छ। प्रशासक विशेषाधिकारहरूको साथ macOS खाता प्रयोग गरेर स्थापना गर्नुहोस्।

सक्रियता अब स्थापना गर्न छुट्टै गरिन्छ। थप जानकारीको लागि MPLAB® XC C Compilers (DS52059) को लागि कागजात लाइसेन्स प्रबन्धक हेर्नुहोस्।

यदि तपाइँ मूल्याङ्कन इजाजतपत्र अन्तर्गत कम्पाइलर चलाउन रोज्नुहुन्छ भने, तपाइँ अब तपाइँको मूल्याङ्कन अवधि समाप्त भएको 14 दिन भित्र हुँदा संकलनको समयमा चेतावनी प्राप्त गर्नुहुनेछ। यदि तपाइँ तपाइँको HPA सदस्यता समाप्त भएको 14 दिन भित्र हुनुहुन्छ भने उही चेतावनी जारी गरिन्छ।

XC नेटवर्क लाइसेन्स सर्भर एक अलग स्थापनाकर्ता हो र एकल-प्रयोगकर्ता कम्पाइलर स्थापनाकर्तामा समावेश गरिएको छैन।

XC लाइसेन्स प्रबन्धकले अब फ्लोटिंग नेटवर्क इजाजतपत्रहरूको रोमिङ समर्थन गर्दछ। मोबाइल प्रयोगकर्ताहरूलाई लक्षित गरी, यो सुविधाले फ्लोटिंग लाइसेन्सलाई छोटो समयको लागि नेटवर्क बन्द गर्न अनुमति दिन्छ। यो सुविधा प्रयोग गरेर, तपाइँ नेटवर्कबाट विच्छेदन गर्न सक्नुहुन्छ र अझै पनि तपाइँको MPLAB XC कम्पाइलर प्रयोग गर्न सक्नुहुन्छ। यस सुविधामा थप जानकारीको लागि XCLM स्थापनाको कागजात फोल्डर हेर्नुहोस्। MPLAB X IDE ले रोमिङलाई दृश्यात्मक रूपमा व्यवस्थापन गर्न लाइसेन्स विन्डो (उपकरणहरू > इजाजतपत्रहरू) समावेश गर्दछ।

स्थापना समस्याहरू समाधान गर्दै

यदि तपाइँ कुनै पनि विन्डोज अपरेटिङ सिस्टम अन्तर्गत कम्पाइलर स्थापना गर्न कठिनाइहरू अनुभव गर्नुहुन्छ भने, निम्न सुझावहरू प्रयास गर्नुहोस्।

  • प्रशासकको रूपमा स्थापना चलाउनुहोस्।
  • स्थापनाकर्ता अनुप्रयोगको अनुमतिहरू 'पूर्ण नियन्त्रण' मा सेट गर्नुहोस्। (दायाँ क्लिक गर्नुहोस् file, गुणहरू, सुरक्षा ट्याब चयन गर्नुहोस्, प्रयोगकर्ता चयन गर्नुहोस्, सम्पादन गर्नुहोस्।)
  • अस्थायी फोल्डरको अनुमतिहरू सेट गर्नुहोस् "पूर्ण नियन्त्रण!

अस्थायी फोल्डरको स्थान निर्धारण गर्न, रन कमाण्डमा %temp% टाइप गर्नुहोस् (Windows लोगो कुञ्जी + R)। यसले ए खोल्नेछ file एक्सप्लोरर संवादले त्यो डाइरेक्टरी देखाउँछ र तपाईंलाई त्यो फोल्डरको मार्ग निर्धारण गर्न अनुमति दिनेछ।

कम्पाइलर कागजात

MPLAB X IDE ड्यासबोर्डमा नीलो मद्दत बटन क्लिक गर्दा तपाईको ब्राउजरमा खुल्ने HTML पृष्ठबाट कम्पाइलरको प्रयोगकर्ताको गाइड खोल्न सकिन्छ, स्क्रिनसटमा उल्लेख गरिए अनुसार।

कम्पाइलर कागजात
यदि तपाइँ 8-बिट AVR लक्ष्यहरूको लागि निर्माण गर्दै हुनुहुन्छ भने, AVR® MCU को लागि MPLAB® XC8 C कम्पाइलर प्रयोगकर्ताको गाइडले ती कम्पाइलर विकल्पहरू र यस वास्तुकलामा लागू हुने सुविधाहरूको जानकारी समावेश गर्दछ।

ग्राहक समर्थन

माइक्रोचिपले यस कम्पाइलर संस्करणको बारेमा बग रिपोर्टहरू, सुझावहरू वा टिप्पणीहरूलाई स्वागत गर्दछ। कृपया कुनै पनि बग रिपोर्ट वा सुविधा अनुरोध समर्थन प्रणाली मार्फत निर्देशित गर्नुहोस्।

कागजात अद्यावधिकहरू

MPLAB XC8 कागजातहरूको अन-लाइन र अप-टु-डेट संस्करणहरूको लागि, कृपया माइक्रोचिपको अनलाइन प्राविधिक कागजातहरूमा जानुहोस्। webसाइट।

यस रिलीजमा नयाँ वा अद्यावधिक गरिएको AVR कागजात:

  • MUSL प्रतिलिपि अधिकार सूचना
  • MPLAB XC C कम्पाइलरहरू स्थापना र इजाजतपत्र (संशोधन M)
  • एम्बेडेड इन्जिनियरहरूको लागि MPLAB XC8 प्रयोगकर्ताको गाइड - AVR MCUs (संशोधन A)
  • MPLAB XC8 C कम्पाइलर प्रयोगकर्ता! AVR MCU (संशोधन F) को लागि गाइड
  • माइक्रोचिप एकीकृत मानक पुस्तकालय सन्दर्भ गाइड (संशोधन बी)

माइक्रोचिप एकीकृत मानक पुस्तकालय सन्दर्भ गाइडले माइक्रोचिप एकीकृत मानक पुस्तकालयद्वारा परिभाषित कार्यहरूको व्यवहार र इन्टरफेस, साथै पुस्तकालय प्रकारहरू र म्याक्रोहरूको उद्देश्य प्रयोगको वर्णन गर्दछ। यी मध्ये केही जानकारी पहिले MPLAB® XC8 C कम्पाइलर प्रयोगकर्ता! AVR® MCU को लागि गाइडमा समावेश गरिएको थियो। यन्त्र-विशिष्ट पुस्तकालय जानकारी अझै पनि यो कम्पाइलर गाइडमा समावेश छ।

यदि तपाइँ भर्खरै 8-बिट यन्त्रहरू र MPLAB XC8 C कम्पाइलरको साथ सुरु गर्दै हुनुहुन्छ भने, MPLAB® XC8 प्रयोगकर्ता! इम्बेडेड इन्जिनियरहरूको लागि गाइड - AVR® MCUs (DS50003108) मा MPLAB X IDE मा परियोजनाहरू सेटअप गर्ने र कोड लेख्ने बारे जानकारी छ। तपाईको पहिलो MPLAB XC8 C परियोजनाको लागि। यो गाइड अब कम्पाइलर संग वितरित छ।

ह्यामेट प्रयोगकर्ताको गाइडलाई यस विमोचनमा कागजात निर्देशिकामा समावेश गरिएको छ। यो गाइड एक स्ट्यान्ड-अलोन एप्लिकेसनको रूपमा Hamate चलाउनेहरूका लागि हो।

नयाँ के छ

निम्न नयाँ AVR-लक्ष्य सुविधाहरू छन् जुन कम्पाइलरले समर्थन गर्दछ। उपशीर्षकहरूमा संस्करण नम्बरले पछ्याउने सुविधाहरू समर्थन गर्न पहिलो कम्पाइलर संस्करणलाई संकेत गर्दछ।

संस्करण 2.40

नयाँ उपकरण समर्थन समर्थन अब निम्न AVR भागहरूका लागि उपलब्ध छ: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64, AVR28, AVR64, AVR32 र।
सुधारिएको प्रक्रियात्मक सार प्रक्रियात्मक एब्स्ट्र्याक्शन (PA) अनुकूलन उपकरण सुधार गरिएको छ ताकि एक प्रकार्य कल निर्देशन ( कल रिकल ) ) समावेश गरिएको कोडलाई रूपरेखा गर्न सकिन्छ। यो तब मात्र हुनेछ यदि स्ट्याकलाई आर्गुमेन्टहरू पास गर्न वा प्रकार्यबाट फिर्ता मान प्राप्त गर्न प्रयोग गरिएको छैन। स्ट्याक प्रयोग गरिन्छ जब एक चल तर्क सूची संग एक प्रकार्य कल गर्दा वा यस उद्देश्यका लागि तोकिएका दर्ताहरू भन्दा बढी तर्कहरू लिने प्रकार्यलाई कल गर्दा। यो सुविधा monk-pa-outline-calls विकल्प प्रयोग गरेर असक्षम गर्न सकिन्छ, वा वस्तुको लागि प्रक्रियात्मक एब्स्ट्र्याक्शन पूर्ण रूपमा असक्षम गर्न सकिन्छ। file वा -monk-pa-on- प्रयोग गरेर कार्यfile र -mo.-pa-on-function क्रमशः, वा nipa विशेषता ( nipa निर्दिष्टकर्ता) प्रयोग गरी प्रकार्यहरूसँग चयन गरी

कोड कभरेज म्याक्रो कम्पाइलरले अब म्याक्रो __CODECOV परिभाषित गर्दछ यदि मान्य mcodecov विकल्प निर्दिष्ट गरिएको छ।

मेमोरी आरक्षण विकल्प xc8-cc चालकले अब AVR लक्ष्यहरूको लागि निर्माण गर्दा -mreserve=space@start: end विकल्प स्वीकार गर्नेछ। यो विकल्पले डेटा वा प्रोग्राम मेमोरी स्पेसमा निर्दिष्ट मेमोरी दायरा आरक्षित गर्दछ, लिङ्करलाई यस क्षेत्रमा कोड वा वस्तुहरू भर्नबाट रोक्छ।

स्मार्ट स्मार्ट IO स्मार्ट IO प्रकार्यहरूमा धेरै सुधारहरू गरिएका छन्, प्रिन्टफ कोर कोडमा सामान्य ट्वीकहरू सहित, %n रूपान्तरण निर्दिष्टकर्तालाई स्वतन्त्र भेरियन्टको रूपमा व्यवहार गर्ने, IO प्रकार्य तर्कहरू ह्यान्डल गर्नका लागि सम्भव भएसम्म छोटो डेटा प्रकारहरू प्रयोग गरेर, मागमा vararg पप दिनचर्याहरूमा लिङ्क गर्ने। , र फिल्ड चौडाइ र सटीक ह्यान्डलिङमा साझा कोड फ्याक्टरिङ। यसले महत्त्वपूर्ण कोड र डाटा बचत गर्न सक्छ, साथै IO को कार्यान्वयन गति बढाउन सक्छ।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

नेटवर्क सर्भर लाइसेन्स MPLAB XC8 कार्यात्मक सुरक्षा कम्पाइलरको यो रिलीजले नेटवर्क सर्भर इजाजतपत्र समर्थन गर्दछ।

संस्करण 2.36

कुनै पनि छैन।

संस्करण 2.35

नयाँ उपकरण समर्थन निम्न AVR भागहरूका लागि समर्थन उपलब्ध छ: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, र AVR64DD32।

सुधारिएको सन्दर्भ स्विचिङ नयाँ -mcall-isr-prologues विकल्पले कसरी बाधा कार्यहरूले प्रविष्टिमा दर्ताहरू बचत गर्छ र अवरोध दिनचर्या समाप्त हुँदा ती दर्ताहरू कसरी पुनर्स्थापित हुन्छन् परिवर्तन गर्दछ। यसले -mcall-prologues विकल्पमा समान रूपमा काम गर्दछ, तर अवरोध कार्यहरू (ISRs) लाई मात्र असर गर्छ।

अझ धेरै सुधारिएको सन्दर्भ स्विचिङ नयाँ -mgas-isr-prologues विकल्पले साना अवरोध सेवा दिनचर्याहरूका लागि उत्पन्न गरिएको कन्टेक्स्ट इच कोड नियन्त्रण गर्दछ। जब यो सुविधा सक्षम हुन्छ, यस सुविधाले दर्ता प्रयोगको लागि ISR स्क्यान गर्नेछ र आवश्यक भएमा यी प्रयोग गरिएका दर्ताहरूलाई मात्र बचत गर्नेछ।

कन्फिगर योग्य फ्लैश म्यापिङ AVR DA र AVR DB परिवारका केही यन्त्रहरूमा SFR (जस्तै FLMAP) हुन्छ जसले प्रोग्राम मेमोरीको कुन 32k खण्डलाई डेटा मेमोरीमा म्याप गरिनेछ भनेर निर्दिष्ट गर्दछ। नयाँ – mconst-data-in-config-mapped-proem विकल्पलाई लिङ्करले सबै विपक्ष योग्य डेटालाई एक 32k खण्डमा राख्न प्रयोग गर्न सकिन्छ र यो डाटा डाटा मेमोरी स्पेसमा म्याप गरिएको छ भनी सुनिश्चित गर्न सम्बन्धित SFR दर्ता स्वतः प्रारम्भ गर्न सकिन्छ। , जहाँ यसलाई अझ प्रभावकारी रूपमा पहुँच गरिनेछ।

माइक्रोचिप एकीकृत मानक पुस्तकालयहरू सबै MPLAB XC कम्पाइलरहरूले माइक्रोचिप एकीकृत मानक पुस्तकालय साझा गर्नेछन्, जुन अब MPLAB XC8 को यो रिलीजको साथ उपलब्ध छ। MPLAB® XC8 C कम्पाइलर प्रयोगकर्ताको गाइड/वा AVR® MCU ले अब यी मानक कार्यहरूको लागि कागजातहरू समावेश गर्दैन। यो जानकारी अब माइक्रोचिप एकीकृत मानक पुस्तकालय सन्दर्भ गाइड मा पाउन सकिन्छ। नोट गर्नुहोस् कि avr-libc द्वारा परिभाषित केही कार्यक्षमता अब उपलब्ध छैन। (लाइब्रेर हेर्नुहोस्):'। कार्यक्षमता...)

स्मार्ट IO नयाँ एकीकृत पुस्तकालयहरूको भागको रूपमा, प्रिन्ट र स्क्यान परिवारहरूमा IO प्रकार्यहरू अब प्रत्येक निर्माणमा अनुकूल रूपमा उत्पन्न हुन्छन्, यी प्रकार्यहरू कार्यक्रममा कसरी प्रयोग गरिन्छ भन्ने आधारमा। यसले कार्यक्रमद्वारा प्रयोग हुने स्रोतहरूलाई पर्याप्त रूपमा घटाउन सक्छ।
स्मार्ट IO सहायता विकल्प स्मार्ट IO प्रकार्यहरूमा कलहरूको विश्लेषण गर्दा (जस्तै printf () वा scanf () ), कम्पाइलरले सधैं ढाँचा स्ट्रिङबाट निर्धारण गर्न सक्दैन वा कलद्वारा आवश्यक ती रूपान्तरण निर्दिष्टकर्ताहरूको तर्कबाट अनुमान लगाउन सक्दैन। पहिले, कम्पाइलरले सँधै कुनै पनि धारणाहरू बनाउँदैन र पूर्ण रूपमा कार्यात्मक IO प्रकार्यहरू अन्तिम कार्यक्रम छविमा जोडिएको सुनिश्चित गर्थे। एउटा नयाँ - msmart-io-format=fmt विकल्प थपिएको छ ताकि कम्पाइलरलाई स्मार्ट IO प्रकार्यहरू द्वारा प्रयोग गरिएको रूपान्तरण निर्दिष्टकर्ताहरूको प्रयोगकर्ताद्वारा सूचित गर्न सकिन्छ जसको प्रयोग अस्पष्ट छ, अत्यधिक लामो IO दिनचर्याहरूलाई लिङ्क हुनबाट रोक्दै। (थप विवरणहरूको लागि smart-io-format विकल्प हेर्नुहोस्।)

अनुकूलन खण्डहरू राख्दै पहिले, -Wl, -section-start विकल्पले अनुरोध गरिएको ठेगानामा निर्दिष्ट खण्ड मात्र राखेको थियो जब लिङ्कर स्क्रिप्टले समान नामको आउटपुट खण्ड परिभाषित गर्दछ। जब त्यो मामला थिएन, खण्ड लिङ्कर द्वारा छनोट गरिएको ठेगानामा राखिएको थियो र विकल्प अनिवार्य रूपमा बेवास्ता गरिएको थियो। अब विकल्पलाई सबै अनुकूलन खण्डहरूका लागि सम्मानित गरिनेछ, यदि लिङ्कर लिपिले खण्ड परिभाषित गर्दैन भने पनि। नोट गर्नुहोस्, यद्यपि, मानक खण्डहरूको लागि, जस्तै। पाठ,। bss वा। डेटा, उत्तम फिट आवंटकसँग अझै पनि तिनीहरूको प्लेसमेन्टमा पूर्ण नियन्त्रण हुनेछ, र विकल्पको कुनै प्रभाव हुनेछैन। -Wl, -Tsection=add विकल्प प्रयोग गर्नुहोस्, जसरी प्रयोगकर्ताको गाइडमा वर्णन गरिएको छ।

संस्करण 2.32

स्ट्याक मार्गदर्शन प्रो कम्पाइलर इजाजतपत्रको साथ उपलब्ध छ, कम्पाइलरको स्ट्याक मार्गदर्शन सुविधा कार्यक्रम द्वारा प्रयोग गरिएको कुनै पनि स्ट्याकको अधिकतम गहिराइ अनुमान गर्न प्रयोग गर्न सकिन्छ। यसले कार्यक्रमको कल ग्राफ निर्माण र विश्लेषण गर्दछ, प्रत्येक प्रकार्यको स्ट्याक उपयोग निर्धारण गर्दछ, र रिपोर्ट उत्पादन गर्दछ, जसबाट कार्यक्रम द्वारा प्रयोग गरिएको स्ट्याकहरूको गहिराई अनुमान गर्न सकिन्छ। यो सुविधा -mchp-stack-usage आदेश-लाइन विकल्प मार्फत सक्षम गरिएको छ। स्ट्याक प्रयोगको सारांश कार्यान्वयन पछि छापिएको छ। विस्तृत स्ट्याक रिपोर्ट नक्सामा उपलब्ध छ file, जुन सामान्य तरिकामा अनुरोध गर्न सकिन्छ।

नयाँ उपकरण समर्थन समर्थन निम्न AVR भागहरूका लागि उपलब्ध छ: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX

फिर्ता लिइएको उपकरण समर्थन समर्थन निम्न AVR भागहरूका लागि अब उपलब्ध छैन: AVR16DA28, AVR16DA32 र, AVR16DA48।

संस्करण 2.31

कुनै पनि छैन।

संस्करण 2.30

डाटा प्रारम्भिकरण रोक्नको लागि नयाँ विकल्प नयाँ -mno-data-ini t ड्राइभर विकल्पले डाटाको प्रारम्भिकता र bss खण्डहरू खाली गर्न रोक्छ। यसले do_ copy_ data र d o_ clear_ bss प्रतीकहरूको आउटपुटलाई एसेम्बलीमा दबाएर काम गर्दछ। files, जसले बारीमा लिङ्करद्वारा ती दिनचर्याहरू समावेश गर्नबाट रोक्नेछ।

परिष्कृत अप्टिमाइजेसनहरू अनावश्यक फिर्ता निर्देशनहरू हटाउने, skip-if-bit-is निर्देशन पछि केही जम्पहरू हटाउने, र सुधारिएको प्रक्रियात्मक अमूर्तता र यो प्रक्रिया दोहोर्याउने क्षमता सहित धेरै अनुकूलन सुधारहरू गरिएका छन्।

अतिरिक्त विकल्पहरू अब यी केही अनुकूलनहरू नियन्त्रण गर्न उपलब्ध छन्, विशेष गरी -f खण्ड एङ्करहरू, जसले स्थिर वस्तुहरूको पहुँचलाई एउटा प्रतीकको सापेक्ष प्रदर्शन गर्न अनुमति दिन्छ; -mpai derations=n, जसले 2 को पूर्वनिर्धारित बाट प्रक्रियात्मक अमूर्त पुनरावृत्तिको संख्या परिवर्तन गर्न अनुमति दिन्छ; र, -mpa- कल लागत- सर्टकल, जसले अधिक आक्रामक प्रक्रियात्मक एब्स्ट्र्याक्शन प्रदर्शन गर्दछ, आशामा कि लिङ्करले लामो कलहरू आराम गर्न सक्छ। यदि अन्तर्निहित धारणाहरू साकार भएन भने यो अन्तिम विकल्पले कोड साइज बढाउन सक्छ।

नयाँ उपकरण समर्थन निम्न AVR भागहरूको लागि समर्थन उपलब्ध छ: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, AVR128DB64, AVRBRXNUMX, AVRXNUMXDAXNUMX।

फिर्ता लिइएको उपकरण समर्थन निम्न AVR भागहरूका लागि समर्थन अब उपलब्ध छैन: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, A664251C, ATAXNUMXQ।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

हेडर file कम्पाइलर बिल्ट-इनहरूको लागि कम्पाइलरले MISRA जस्ता भाषा विशिष्टताहरू अनुरूप हुन सक्छ भन्ने सुनिश्चित गर्न हेडर file, जुन स्वचालित रूपमा समावेश गरिएको छ , अद्यावधिक गरिएको छ। यो हेडरले _buil tin _avrnop () र _buil tin_ avr delay_ cycles () जस्ता सबै इन-बिल्ट प्रकार्यहरूका लागि प्रोटोटाइपहरू समावेश गर्दछ। केही बिल्ट-इनहरू MISRA अनुरूप नहुन सक्छन्; यसलाई कम्पाइलर कमाण्ड लाइनमा परिभाषित _Xe_ STRICT_ MISRA थपेर हटाउन सकिन्छ। बिल्ट-इनहरू र तिनीहरूको घोषणाहरू निश्चित-चौडाइ प्रकारहरू प्रयोग गर्न अद्यावधिक गरिएको छ।

संस्करण 2.20

नयाँ उपकरण समर्थन निम्न AVR भागहरूका लागि समर्थन उपलब्ध छ: ATTINY1624, ATTINY1626, र ATTINY1627।

उत्तम उत्तम फिट आवंटन कम्पाइलरमा उत्तम फिट विनियोजनकर्ता (BFA) लाई सुधार गरिएको छ ताकि खण्डहरूलाई राम्रो अप्टिमाइजेसनको अनुमति दिने क्रममा आवंटित गरियो। BFA ले अब नामित ठेगाना स्पेसहरूलाई समर्थन गर्दछ र डेटा प्रारम्भिकतालाई राम्रोसँग ह्यान्डल गर्दछ।

सुधारिएको प्रक्रियात्मक सार प्रक्रियागत अमूर्त अप्टिमाइजेसनहरू अब थप कोड अनुक्रमहरूमा प्रदर्शन गरिन्छ। यस अप्टिमाइजेसनले कोड साइज बढाएको हुनसक्ने अघिल्लो अवस्थाहरूलाई अप्टिमाइजेसन कोडलाई लिङ्करको फोहोर सङ्कलन प्रक्रियाको बारेमा सचेत बनाएर सम्बोधन गरिएको छ।

AVR एसेम्बलरको अनुपस्थिति AVR एसेम्बलर अब यस वितरणमा समावेश गरिएको छैन।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.10

कोड कभरेज यो विज्ञप्तिमा कोड कभरेज सुविधा समावेश छ जसले परियोजनाको स्रोत कोड कार्यान्वयन भएको हदसम्मको विश्लेषणलाई सहज बनाउँछ। यसलाई सक्षम गर्न विकल्प -mcodecov=ram प्रयोग गर्नुहोस्। तपाइँको हार्डवेयरमा कार्यक्रमको कार्यान्वयन पछि, कोड कभरेज जानकारी उपकरणमा मिलाइनेछ, र यो कोड कभरेज प्लगइन मार्फत MPLAB X IDE मा स्थानान्तरण र प्रदर्शन गर्न सकिन्छ। यो प्लगइन प्राप्त गर्न सकिन्छ जानकारीको लागि IDE कागजात हेर्नुहोस्। #pragma mcodecov कभरेज विश्लेषणबाट पछिका कार्यहरू बहिष्कार गर्न प्रयोग गर्न सकिन्छ। आदर्श रूपमा प्राग्मा को सुरुमा थपिनुपर्छ file त्यो सम्पूर्ण बहिष्कार गर्न file कभरेज विश्लेषणबाट। वैकल्पिक रूपमा, विशेषता ( (mcodecov) ) कभरेज विश्लेषणबाट विशेष प्रकार्य बहिष्कार गर्न प्रयोग गर्न सकिन्छ।

उपकरण विवरण files एउटा नयाँ यन्त्र file avr chipinfo भनिन्छ। html कम्पाइलर वितरणको कागजात डाइरेक्टरीमा अवस्थित छ। यो file कम्पाइलर द्वारा समर्थित सबै उपकरणहरू सूचीबद्ध गर्दछ। यन्त्रको नाममा क्लिक गर्नुहोस्, र यसले त्यो यन्त्रको लागि सबै स्वीकार्य कन्फिगरेसन बिट सेटिङ/मान जोडीहरू देखाउने पृष्ठ खोल्नेछ, पूर्वampलेस।

प्रक्रियागत अमूर्तता प्रक्रियात्मक एब्स्ट्रेक्शन अप्टिमाइजेसनहरू, जसले त्यस ब्लकको एक्स्ट्र्याक्टेड प्रतिलिपिमा कलहरूका साथ एसेम्बली कोडको सामान्य ब्लकहरू प्रतिस्थापन गर्दछ, कम्पाइलरमा थपिएको छ। यी एक अलग अनुप्रयोग द्वारा प्रदर्शन गरिन्छ, जुन स्तर 2, 3 वा अनुकूलन चयन गर्दा कम्पाइलर द्वारा स्वचालित रूपमा आह्वान गरिन्छ। यी अप्टिमाइजेसनहरूले कोड साइज घटाउँछन्, तर तिनीहरूले कार्यान्वयन गति र कोड डिबगबिलिटी कम गर्न सक्छन्।
प्रक्रियात्मक अमूर्तता विकल्प -mno-pa प्रयोग गरेर उच्च अप्टिमाइजेसन स्तरहरूमा असक्षम गर्न सकिन्छ, वा कम अप्टिमाइजेसन स्तरहरूमा सक्षम गर्न सकिन्छ (तपाईंको इजाजतपत्रको अधीनमा) -mpa प्रयोग गरेर। यो वस्तुको लागि असक्षम गर्न सकिन्छ file -mno-pa-on- प्रयोग गर्दैfile=fileनाम, वा function= function मा -mno-pa प्रयोग गरेर प्रकार्यको लागि अक्षम।
तपाईंको स्रोत कोड भित्र, प्रकार्यको परिभाषासँग _attribute_ ( (nopa)) प्रयोग गरेर, वा _nopa प्रयोग गरेर कार्यको लागि प्रक्रियात्मक एब्स्ट्र्याक्शन असक्षम गर्न सकिन्छ, जुन विशेषता ( (nopa, noinline)) मा विस्तार हुन्छ र यसरी कार्य इनलाइनिङ हुनबाट रोक्छ। र त्यहाँ इनलाइन कोडको अमूर्तता छ।
Pragma मा लक बिट समर्थन #pragma कन्फिगरेसन अब AVR लक बिटहरू साथै अन्य कन्फिगरेसन बिटहरू निर्दिष्ट गर्न प्रयोग गर्न सकिन्छ। avr चिप जानकारी जाँच गर्नुहोस्। html file (माथि उल्लेख गरिएको) यो pragma संग प्रयोग गर्न सेटिङ/मान जोडीहरूको लागि।
नयाँ उपकरण समर्थन निम्न भागहरूका लागि समर्थन उपलब्ध छ: AVR28DA128, AVR64DA128, AVR32DA128, र AVR48DA128।

संस्करण 2.05

तपाईंको पैसाको लागि थप बिटहरू यस कम्पाइलर र इजाजतपत्र प्रबन्धकको macOS संस्करण अब 64-बिट अनुप्रयोग हो। यसले सुनिश्चित गर्नेछ कि कम्पाइलरले macOS को हालैका संस्करणहरूमा चेतावनी बिना स्थापना र चल्नेछ।
कार्यक्रम मेमोरीमा कन्स्ट वस्तुहरू कम्पाइलरले अब कन्स्ट-योग्य वस्तुहरू प्रोग्राम फ्ल्याश मेमोरीमा राख्न सक्छ, यी RAM मा अवस्थित हुनुको सट्टा। कम्पाइलर परिमार्जन गरिएको छ ताकि कन्स्ट-योग्य ग्लोबल डाटा प्रोग्राम फ्ल्याश मेमोरीमा भण्डारण गरिन्छ र यो डाटालाई उपयुक्त प्रोग्राम-मेमोरी निर्देशनहरू प्रयोग गरेर प्रत्यक्ष र अप्रत्यक्ष रूपमा पहुँच गर्न सकिन्छ। यो नयाँ सुविधा पूर्वनिर्धारित रूपमा सक्षम गरिएको छ तर -mno-const-data-in-progmem विकल्प प्रयोग गरेर असक्षम गर्न सकिन्छ। avrxmega3 र avrtiny आर्किटेक्चरहरूको लागि, यो सुविधा आवश्यक पर्दैन र सधैं असक्षम हुन्छ, किनभने प्रोग्राम मेमोरीलाई यी यन्त्रहरूको लागि डाटा ठेगाना स्पेसमा म्याप गरिएको हुन्छ।
नि: शुल्क मानक यस कम्पाइलरको बिना इजाजतपत्र (नि:शुल्क) संस्करणहरूले अब स्तर 2 सम्म र समावेश सहित अनुकूलनहरूलाई अनुमति दिन्छ। यसले मानक इजाजतपत्र प्रयोग गरेर पहिले सम्भव भएको आउटपुटको समान, समान नभए पनि अनुमति दिन्छ।
AVRASM2 स्वागत छ 2-बिट यन्त्रहरूको लागि AVRASM8 एसेम्बलर अब XC8 कम्पाइलर स्थापनाकर्तामा समावेश गरिएको छ। यो एसेम्बलर XC8 कम्पाइलर द्वारा प्रयोग गरिएको छैन, तर हस्तलिखित असेंबली स्रोतमा आधारित परियोजनाहरूको लागि उपलब्ध छ।
नयाँ उपकरण समर्थन निम्न भागहरूका लागि समर्थन उपलब्ध छ: ATMEGA1608, ATMEGA1609, ATMEGA808, र ATMEGA809।

संस्करण 2.00

शीर्ष-स्तर चालक xc8-cc भनिने नयाँ ड्राइभर, अब अघिल्लो avr-gcc ड्राइभर र xc8 ड्राइभर भन्दा माथि बस्छ, र यसले लक्षित यन्त्रको चयनमा आधारित उपयुक्त कम्पाइलरलाई कल गर्न सक्छ। यो ड्राइभरले GCC-शैली विकल्पहरू स्वीकार गर्दछ, जुन कार्यान्वयन भइरहेको कम्पाइलरको लागि अनुवाद वा पास गरिन्छ। यो ड्राइभरले कुनै पनि AVR वा PIC लक्ष्यसँग प्रयोग गर्न मिल्दोजुल्दो शब्दार्थका साथ विकल्पहरूको समान सेटलाई अनुमति दिन्छ र यसैले कम्पाइलरलाई आह्वान गर्ने सिफारिस गरिएको तरिका हो। यदि आवश्यक भएमा, पुरानो avr-gcc ड्राइभरलाई पहिलेको कम्पाइलर संस्करणहरूमा स्वीकार गरिएको पुरानो शैली विकल्पहरू प्रयोग गरेर सिधै कल गर्न सकिन्छ।

साधारण सी इन्टरफेस यो कम्पाइलरले अब MPLAB साझा C इन्टरफेस अनुरूप हुन सक्छ, स्रोत कोडलाई सबै MPLAB XC कम्पाइलरहरूमा सजिलैसँग पोर्ट गर्न अनुमति दिँदै। -mext=cci विकल्पले यो सुविधाको लागि अनुरोध गर्दछ, धेरै भाषा विस्तारहरूको लागि वैकल्पिक वाक्य रचना सक्षम पार्दै।

नयाँ पुस्तकालय चालक नयाँ लाइब्रेरियन चालकलाई अघिल्लो PIC लाइब्रेरियन र AVR avr-ar लाइब्रेरियन भन्दा माथि राखिएको छ। यो ड्राइभरले GCC-Archiver-शैली विकल्पहरू स्वीकार गर्दछ, जुन कि त अनुवाद गरिएको छ वा लाइब्रेरियनलाई कार्यान्वयन गरिँदै छ। नयाँ ड्राइभरले कुनै पनि PIC वा AVR लाइब्रेरी सिर्जना गर्न वा हेरफेर गर्न प्रयोग गर्न समान शब्दार्थका साथ विकल्पहरूको समान सेटलाई अनुमति दिन्छ। file र यसरी लाइब्रेरियनलाई बोलाउने सिफारिस गरिएको तरिका हो। विरासत परियोजनाहरूका लागि आवश्यक भएमा, अघिल्लो कम्पाइलर संस्करणहरूमा स्वीकार गरिएको पुरानो-शैली विकल्पहरू प्रयोग गरेर अघिल्लो लाइब्रेरियनलाई सिधै कल गर्न सकिन्छ।

माइग्रेसन मुद्दाहरू

निम्न सुविधाहरू छन् जुन अब कम्पाइलरद्वारा फरक रूपमा ह्यान्डल गरिएको छ। यदि यो कम्पाइलर संस्करणमा कोड पोर्टिङ गर्दा यी परिवर्तनहरूलाई तपाईंको स्रोत कोडमा परिमार्जन आवश्यक हुन सक्छ। उपशीर्षकहरूमा संस्करण नम्बरले पछ्याउने परिवर्तनहरूलाई समर्थन गर्न पहिलो कम्पाइलर संस्करणलाई संकेत गर्दछ।

संस्करण 2.40

कुनै पनि छैन।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.36

कुनै पनि छैन।

संस्करण 2.35

स्ट्रिङ-टु आधारहरूको ह्यान्डलिंग (XCS-2420) अन्य XC कम्पाइलरहरूसँग स्थिरता सुनिश्चित गर्न, XC8 string-to प्रकार्यहरू, जस्तै strtol () आदि, यदि निर्दिष्ट आधार 36 भन्दा ठूलो छ भने इनपुट स्ट्रिङ रूपान्तरण गर्ने प्रयास गर्दैन र यसको सट्टा EINVAL मा errno सेट गर्नेछ। C मानकले यो आधार मान नाघिँदा प्रकार्यहरूको व्यवहार निर्दिष्ट गर्दैन।

अनुपयुक्त गति अनुकूलन स्तर ३ अप्टिमाइजेसन (-०३) चयन गर्दा प्रक्रियागत अमूर्त अप्टिमाइजेसनहरू सक्षम गरिँदै थिए। यी अप्टिमाइजेसनहरूले कोड गतिको खर्चमा कोड साइज घटाउँछन्, त्यसैले प्रदर्शन गर्नु हुँदैनथ्यो। यो अप्टिमाइजेसन स्तर प्रयोग गर्ने परियोजनाहरूले कोड साइज र कार्यान्वयन गतिमा भिन्नता देख्न सक्छ जब यो रिलीजको साथ बनाइन्छ।

पुस्तकालय कार्यक्षमता धेरै मानक C पुस्तकालय प्रकार्यहरूको लागि कोड अब माइक्रोचिपको एकीकृत मानक पुस्तकालयबाट आउँछ, जुन पहिलेको avr-libc पुस्तकालयले प्रदान गरेको तुलनामा केही परिस्थितिहरूमा फरक व्यवहार देखाउन सक्छ। पूर्वका लागिample, यो अब lprintf_flt पुस्तकालयमा लिङ्क गर्न आवश्यक छैन (-print _flt विकल्प) फ्लोट-ढाँचा निर्दिष्टकर्ताहरूको लागि ढाँचा गरिएको IO समर्थन सक्रिय गर्न। माइक्रोचिप एकीकृत मानक पुस्तकालयको स्मार्ट IO सुविधाहरूले यो विकल्पलाई अनावश्यक बनाउँछ। थप रूपमा, स्ट्रिङ र मेमोरी प्रकार्यहरू (जस्तै strcpy_P () आदि .. ) को लागि _p प्रत्यय दिनचर्याहरूको प्रयोग जुन फ्ल्यासमा const स्ट्रिङहरूमा सञ्चालन हुन्छ अब आवश्यक छैन। मानक C दिनचर्याहरू (जस्तै strcpy ()) ले यस्तो डेटासँग सही रूपमा काम गर्नेछ जब const-data-in-program-memory सुविधा सक्षम हुन्छ।

संस्करण 2.32

कुनै पनि छैन।

संस्करण 2.31

कुनै पनि छैन।

संस्करण 2.30

कुनै पनि छैन।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.20

DFP लेआउट परिवर्तन गरियो कम्पाइलरले अब DFPs (उपकरण परिवार प्याकहरू) द्वारा प्रयोग गरिएको फरक लेआउट मान्दछ। यसको मतलब यो हुनेछ कि पुरानो DFP ले यो रिलीजको साथ काम नगर्न सक्छ, र पुराना कम्पाइलरहरूले नवीनतम DFPs प्रयोग गर्न सक्षम हुनेछैनन्।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.10

कुनै पनि छैन

संस्करण 2.05

कार्यक्रम मेमोरीमा कन्स्ट वस्तुहरू नोट गर्नुहोस् कि पूर्वनिर्धारित रूपमा, const-qualfiied वस्तुहरू कार्यक्रम मेमोरीमा राखिनेछ र पहुँच गरिनेछ (यहाँ वर्णन गरिए अनुसार)। यसले तपाइँको परियोजनाको आकार र कार्यान्वयन गतिलाई असर गर्नेछ, तर RAM को प्रयोग कम गर्नुपर्छ। यो सुविधा असक्षम गर्न सकिन्छ, यदि आवश्यक भएमा, -mnoconst-da ta-in-progmem विकल्प प्रयोग गरेर।

संस्करण 2.00

कन्फिगरेसन फ्यूज यन्त्र कन्फिगरेसन फ्यूजहरू अब कन्फिगरेसन प्राग्मा प्रयोग गरेर फ्यूज अवस्था निर्दिष्ट गर्न सेटिङ-मूल्य जोडीहरू प्रयोग गरी प्रोग्राम गर्न सकिन्छ, उदाहरणका लागि
#pragma कन्फिगरेसन WDT0N = SET
#pragma कन्फिगरेसन B0DLEVEL = B0DLEVEL_4V3
निरपेक्ष वस्तु र कार्यहरू वस्तु र प्रकार्यहरू अब CCI _at (ठेगाना) निर्दिष्टकर्ता प्रयोग गरेर मेमोरीमा निर्दिष्ट ठेगानामा राख्न सकिन्छ, पूर्वका लागिample: #समावेश गर्नुहोस् int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } यो निर्दिष्टकर्ताको तर्क एक स्थिर हुनुपर्छ जसले पहिलो बाइट वा निर्देशन राखिने ठेगानालाई प्रतिनिधित्व गर्दछ। RAM ठेगानाहरू 0x800000 को अफसेट प्रयोग गरेर संकेत गरिएको छ। CCI लाई यो सुविधा प्रयोग गर्न सक्षम पार्नुहोस्।
नयाँ अवरोध प्रकार्य वाक्य रचना कम्पाइलरले अब CCI अवरोध (num) निर्दिष्टकर्ता स्वीकार गर्दछ कि C प्रकार्यहरू अवरोध ह्यान्डलरहरू हुन्। निर्दिष्टकर्ताले एक अवरोध नम्बर लिन्छ, उदाहरणका लागिample: #समावेश गर्नुहोस् void interrupt(SPI STC_ vect _num) spi Isr(void) { … }

स्थिर मुद्दाहरू

निम्न सुधारहरू छन् जुन कम्पाइलरमा गरिएका छन्। यसले उत्पन्न कोडमा बगहरू समाधान गर्न सक्छ वा प्रयोगकर्ताको गाइडद्वारा अभिप्रेत वा निर्दिष्ट गरिएकोमा कम्पाइलरको सञ्चालनलाई परिवर्तन गर्न सक्छ। उपशीर्षकहरूमा संस्करण नम्बरले पछ्याउने समस्याहरूको लागि समाधान समावेश गर्न पहिलो कम्पाइलर संस्करणलाई संकेत गर्दछ। शीर्षकमा कोष्ठक लगाइएको लेबल (हरू) ट्र्याकिङ डेटाबेसमा मुद्दाको पहिचान हो। यदि तपाईंलाई समर्थनलाई सम्पर्क गर्न आवश्यक छ भने यी उपयोगी हुन सक्छन्।

नोट गर्नुहोस् कि यन्त्रसँग सम्बन्धित यन्त्र परिवार प्याक (DFP) मा केही यन्त्र-विशिष्ट समस्याहरू सच्याइएका छन्। DFP मा गरिएका परिवर्तनहरू र नवीनतम प्याकहरू डाउनलोड गर्नका लागि MPLAB प्याक प्रबन्धक हेर्नुहोस्।

संस्करण 2.40

धेरै आराम (XCS-2876) -mrelax विकल्प प्रयोग गर्दा, कम्पाइलरले केही खण्डहरू सँगै आवंटित गरिरहेको थिएन, परिणामस्वरूप कम इष्टतम कोड आकारहरू। यो नयाँ MUSL पुस्तकालयहरू वा कमजोर प्रतीकहरू प्रयोग गर्ने कोडको साथ भएको हुन सक्छ।
चेतावनीमा उल्लेख गरिए अनुसार म्यापिङ सुविधा असक्षम गरिएको छैन (XCS-2875) लागत-डेटा-इन-कन्फिग म्यापडप्रोग्मेम सुविधा सक्षम गरिएको लागत-डेटा-इन-प्रोम सुविधामा निर्भर छ। यदि लागत-डेटा-आईपी कन्फिग-म्याप-प्रोएम सुविधा विकल्प प्रयोग गरेर स्पष्ट रूपमा सक्षम पारिएको थियो र लागत-डेटा-इनप्रोग्मेम सुविधा असक्षम गरिएको थियो भने, विपक्ष डेटा- इन-कन्फिग-म्याप गरिएको- भनी चेतावनी सन्देशको बावजुद, लिङ्क चरण असफल भयो। proem सुविधा स्वचालित रूपमा अक्षम गरिएको थियो, जुन पूर्ण रूपमा सही थिएन। यो अवस्थामा const-data-in-config-mapped-proem सुविधा अब पूर्ण रूपमा असक्षम गरिएको छ।
NVMCTRL (XCS-2848) लाई सही रूपमा पहुँच गर्न DFP परिवर्तनहरू AVR64EA यन्त्रहरूद्वारा प्रयोग गरिएको रनटाइम स्टार्टअप कोडले NVMCTRL दर्ता कन्फिगरेसन परिवर्तन संरक्षण (CCP) अन्तर्गत थियो र कन्फिगरेसन-डेटा-इन कन्फिगरेसन-प्रोएम कम्पाइलरले प्रयोग गरेको पृष्ठमा IO SFR सेट गर्न सक्षम थिएन भन्ने कुरालाई ध्यानमा राखेन। सुविधा। AVR-Ex_DFP संस्करण 2.2.55 मा गरिएका परिवर्तनहरूले रनटाइम स्टार्टअप कोडलाई यो दर्तामा सही रूपमा लेख्न अनुमति दिनेछ।
फ्लैश म्यापिङबाट बच्न DFP परिवर्तनहरू (XCS-2847) AVR128DA28/32/48/64 सिलिकन इरेटा (DS80000882) मा रिपोर्ट गरिएको फ्ल्याश म्यापिङ उपकरण सुविधाको साथमा समस्याको लागि कार्य-वरपर कार्यान्वयन गरिएको छ। const-data-in-config-mapped-proem कम्पाइलर सुविधा प्रभावित यन्त्रहरूको लागि पूर्वनिर्धारित रूपमा लागू गरिने छैन, र यो परिवर्तन AVR-Ex_DFP संस्करण 2.2.160 मा देखा पर्नेछ।
sinhf वा coshf (XCS-2834) को साथ त्रुटि बनाउनुहोस् sinhf () वा coshf () पुस्तकालय प्रकार्यहरू प्रयोग गर्ने प्रयास गर्दा एउटा अपरिभाषित सन्दर्भ वर्णन गर्दा लिङ्क त्रुटि भयो। सन्दर्भ गरिएको छुटेको प्रकार्य अब कम्पाइलर वितरणमा समावेश गरिएको छ।
Nopa (XCS-2833) सँग त्रुटिहरू बनाउनुहोस् nopa विशेषता प्रयोग गरी एउटा प्रकार्यसँग यसको एसेम्बलर नाम निर्दिष्ट गरिएको छ () को रूपमा प्रयोग गरेर एसेम्बलरबाट त्रुटि सन्देशहरू ट्रिगर गरियो। यो संयोजन सम्भव छैन।
सूचक तर्कहरू (XCS-2755, XCS-2731) सँग विभिन्न प्रकार्य विफलता आर्गुमेन्टको चर संख्या भएका प्रकार्यहरूले लागत-डेटा-इन-प्रोम सुविधा सक्षम हुँदा चर तर्क सूचीमा 24-बिट (_मेमो प्रकार) सूचकहरू पारित हुने अपेक्षा गर्दछ। तर्कहरू जुन डेटा मेमोरीको लागि संकेतकहरू थिए 16-बिट वस्तुहरूको रूपमा पास गरिँदै थियो, तिनीहरू अन्ततः पढ्दा कोड विफलताको कारण। जब कन्स डाटा-इन-प्रोम सुविधा सक्षम हुन्छ, सबै 16-बिट पोइन्टर्स आर्गुमेन्टहरू अब 24-बिट पोइन्टरहरूमा रूपान्तरण हुन्छन्। strtoxxx पुस्तकालय प्रकार्यहरू असफल (XCS-2620) जब const-data-in-proem सुविधा सक्षम पारिएको थियो, कार्यक्रम मेमोरीमा नभएको स्रोत स्ट्रिङ तर्कहरूको लागि strtoxxx पुस्तकालय प्रकार्यहरूमा इन्टर प्यारामिटर ठीकसँग अद्यावधिक गरिएको थिएन।
अवैध कास्टहरूका लागि अलर्टहरू (XCS-2612) कम्पाइलरले अब त्रुटि जारी गर्नेछ यदि लागत-इन-प्रोम सुविधा सक्षम पारिएको छ र स्ट्रिङ शाब्दिकको ठेगाना स्पष्ट रूपमा डेटा ठेगाना स्पेसमा कास्ट गरिएको छ (कन्स्ट क्वालिफायर छोड्दै), पूर्वका लागि।ample, (uint8 t *) "नमस्ते संसार!"। एक चेतावनी मुद्दा हो यदि ठेगाना अमान्य हुन सक्छ जब const डेटा सूचक स्पष्ट रूपमा डाटा ठेगाना ठाउँमा कास्ट हुन्छ।
अनइनिशियलाइज्ड कन्स्ट वस्तुहरूको प्लेसमेन्ट (XCS-2408) Uninitialized const र const v olatile वस्तुहरू यन्त्रहरूमा प्रोग्राम मेमोरीमा राखिएको थिएन जसले डेटा ठेगाना स्पेसमा तिनीहरूको प्रोग्राम मेमोरीको सबै वा अंश नक्सा गर्दछ। यी यन्त्रहरूका लागि, त्यस्ता वस्तुहरू अब प्रोग्राम मेमोरीमा राखिएका छन्, तिनीहरूको सञ्चालन अन्य यन्त्रहरूसँग सुसंगत बनाउँदै।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.36

ढिलाइ गर्दा त्रुटि (XCS-2774) पूर्वनिर्धारित नि: शुल्क मोड अप्टिमाइजेसनहरूमा साना परिवर्तनहरूले ढिलाइ बिल्ट-इन प्रकार्यहरूमा अपरेन्ड अभिव्यक्तिहरूलाई निरन्तर फोल्ड गर्न रोक्यो, जसको परिणामस्वरूप तिनीहरूलाई गैर-सम्पर्कको रूपमा व्यवहार गरिन्छ र त्रुटि ट्रिगर हुन्छ: _buil tin avr delay_ cycles अपेक्षा गर्दछ ac ompile समय पूर्णांक स्थिर।

संस्करण 2.35

_at (XCS-2653) को प्रयोग गरेर निरन्तर आवंटन एउटै नाम र () मा प्रयोग गरेर खण्डमा बहु वस्तुहरू स्थानहरूको निरन्तर आवंटनले सही रूपमा काम गरेन। पूर्वका लागिample: constchararrl [ ] at tri butte (sect on(".misses"))) at (Ox50 0 ) = {Oxo , Ox CD} ; लागत char arr2[ ] at tri butte ((section(".my s eke"))) = {Oxen, Ox FE}; aril पछि तुरुन्तै arr2 राख्नु पर्छ।
खण्ड सुरु ठेगाना निर्दिष्ट गर्दै (XCS-2650) -Wal, -section-start विकल्प चुपचाप मनोनित सुरु ठेगानामा खण्डहरू राख्न असफल भयो। यो मुद्दा कुनै पनि अनुकूलन-नाम खण्डहरूको लागि तय गरिएको छ; यद्यपि, यसले कुनै पनि मानक खण्डहरूमा काम गर्दैन, जस्तै। पाठ वा। bss, जुन a -Wl, -T विकल्प प्रयोग गरेर राखिएको हुनुपर्छ।
आराम गर्दा लिङ्कर क्र्यास हुन्छ (XCS-2647) जब -relax अप्टिमाइजेसन सक्षम पारिएको थियो र त्यहाँ उपलब्ध मेमोरीमा फिट नहुने कोड वा डेटा खण्डहरू थिए, लिङ्कर क्र्यास भयो। अब, यस्तो परिस्थितिमा, त्रुटि सन्देशहरू सट्टा जारी गरिन्छ।
खराब EEPROM पहुँच (XCS-2629) लेप्रोमा _read_ ब्लक दिनचर्याले मेगा यन्त्रहरूमा सही रूपमा काम गरेन जब -monist-data-in-proem विकल्प सक्षम पारिएको थियो (जुन पूर्वनिर्धारित अवस्था हो), परिणामस्वरूप EEPROM मेमोरी सही रूपमा पढिएको छैन।
अवैध मेमोरी आवंटन (XCS-2593, XCS-2651) जब -टेक्स्ट वा -टाटा लिंकर विकल्प (पूर्वको लागिample एक -Wl ड्राइभर विकल्प प्रयोग गरेर पारित) निर्दिष्ट गरिएको छ, सम्बन्धित पाठ/डेटा क्षेत्र मूल अद्यावधिक गरिएको थियो; यद्यपि, अन्तिम ठेगाना तदनुसार समायोजन गरिएको थिएन, जसले क्षेत्रलाई लक्षित यन्त्रको मेमोरी दायरा नाघेको हुन सक्छ।
अमान्य ATtiny अवरोध कोड (XCS-2465) ट्याटिन यन्त्रहरूका लागि निर्माण गर्दा र अप्टिमाइजेसनहरू (-००) असक्षम गरिएको थियो, अवरोध प्रकार्यहरूले दायरा एसेम्बलर सन्देशहरू बाहिरको अपरेन्ड ट्रिगर गरेको हुन सक्छ।
विकल्पहरू पास गरिएन (XCS-2452) धेरै, अल्पविराम-विभाजित लिङ्कर विकल्पहरूसँग -Wl विकल्प प्रयोग गर्दा, सबै लिङ्कर विकल्पहरू लिङ्करमा पठाइएका थिएनन्।
त्रुटि अप्रत्यक्ष रूपमा कार्यक्रम मेमोरी पढ्ने (XCS-2450) केही उदाहरणहरूमा, कम्पाइलरले एउटा आन्तरिक त्रुटि (अपरिचित insn) उत्पादन गर्यो जब एक सूचकबाट प्रोग्राम मेमोरीमा दुई बाइट मान पढ्दा।

संस्करण 2.32

पुस्तकालयको दोस्रो पहुँच असफल (XCS-2381) Xc8-ar को Windows संस्करण आह्वान गर्दै। exe लाइब्रेरी आर्काइभर दोस्रो पटक अवस्थित पुस्तकालय अभिलेखमा पहुँच गर्न त्रुटि सन्देश पुन: नामकरण गर्न असमर्थ भएको हुन सक्छ।

संस्करण 2.31

अस्पष्ट कम्पाइलर विफलता (XCS-2367) विन्डोज प्लेटफर्महरूमा चल्दा प्रणाली अस्थायी डाइरेक्टरीमा डट समावेश भएको पथमा सेट गरिएको थियो।' वर्ण, कम्पाइलर कार्यान्वयन गर्न असफल भएको हुन सक्छ।

संस्करण 2.30

रूपरेखा (XCS-2299) पछि ग्लोबल लेबलहरू गलत ठाउँमा हातले लेखिएको असेंबली कोड जसले विश्वव्यापी लेबलहरूलाई एसेम्बली अनुक्रमहरू भित्र राख्छ जुन प्रक्रियात्मक एब्स्ट्र्याक्शनद्वारा फ्याक्टर गरिएको हुन्छ सही रूपमा पुनर्स्थापित गरिएको हुन सक्छ।
आरामदायी दुर्घटना (XCS-2287) -merlad विकल्प प्रयोग गर्दा टेल जम्प रिलेक्सेसन अप्टिमाइजेसनले खण्डको अन्त्यमा नभएको ret निर्देशन हटाउने प्रयास गर्दा लिङ्कर क्र्यास भएको हुन सक्छ।
मानको रूपमा लेबलहरू अनुकूलन गर्दा क्र्यास (XCS-2282) "मानहरूको रूपमा लेबलहरू" GNU C भाषा विस्तार प्रयोग गर्ने कोडले प्रक्रियात्मक एब्स्ट्र्याकसन अप्टिमाइजेसनहरू क्र्यास भएको हुन सक्छ, आउटलाइन गरिएको VMA दायरा फिक्सअप त्रुटिको साथ।
त्यस्तो const छैन (XCS-2271) बाट शुरुवात () र अन्य कार्यहरूको लागि प्रोटोटाइपहरू -monist-data inprogmem सुविधा असक्षम हुँदा फर्काइएको स्ट्रिङ पोइन्टर्समा गैर-मानक लागत योग्यता निर्दिष्ट नगर्नुहोस्। नोट गर्नुहोस् कि avrxmega3 र avertin उपकरणहरूसँग, यो सुविधा स्थायी रूपमा सक्षम छ।
हराएको सुरुवातकर्ता (XCS-2269) जब अनुवाद इकाईमा एक भन्दा बढी चरहरू खण्डमा राखिएको थियो (खण्ड वा विशेषता ((खण्ड)) प्रयोग गरेर), र पहिलो यस्तो चर शून्य प्रारम्भिक थियो वा इनिसियलाइजर थिएन, उही अनुवाद एकाइमा अन्य चरहरूको लागि प्रारम्भिकहरू। जुन एउटै खण्डमा राखिएको थियो हरायो।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.20

लामो आदेशहरूसँग त्रुटि (XCS-1983) AVR लक्ष्य प्रयोग गर्दा, कम्पाइलर a सँग रोकिएको हुन सक्छ file त्रुटि फेला परेन, यदि आदेश रेखा अत्यन्त ठूलो थियो र विशेष क्यारेक्टरहरू जस्तै उद्धरणहरू, ब्याकस्ल्याशहरू, आदि समावेश गर्दछ।
असाइन नगरिएको रोडाटा खण्ड (XCS-1920) AVR लिङ्करले avrxmega3 र avrtiny आर्किटेक्चरहरूको लागि निर्माण गर्दा अनुकूलन rodata खण्डहरूको लागि मेमोरी असाइन गर्न असफल भयो, सम्भावित रूपमा मेमोरी ओभरल्याप त्रुटिहरू उत्पादन गर्दै।

संस्करण २.३९ (कार्यात्मक सुरक्षा रिलीज)

कुनै पनि छैन।

संस्करण 2.10

स्थानान्तरण विफलता (XCS-1891) उत्तम फिट आवंटकले लिङ्कर विश्राम पछि खण्डहरू बीचमा मेमोरी 'प्वाल' छोड्दै थियो। मेमोरी टुक्रा पार्नु बाहेक, यसले पीसी-रिलेटिभ जम्प वा कलहरू दायरा बाहिर हुने सम्बन्धमा लिंकर रिलोकेशन विफलता हुने सम्भावना बढाएको छ।
निर्देशनहरू विश्राम द्वारा रूपान्तरित छैनन् (XCS-1889) लिंकर विश्राम जम्प वा कल निर्देशनहरूको लागि भएको छैन जसको लक्ष्यहरू आराम भएमा पुग्न सकिन्छ।
हराइरहेको छ कार्यक्षमता (XCSE-388) बाट धेरै परिभाषाहरू , जस्तै clock_ div_t र clock_prescale_set (), लाई ATmega324PB, ATmega328PB, ATtiny441, र ATtiny841 लगायतका यन्त्रहरूका लागि परिभाषित गरिएको थिएन।
म्याक्रोहरू छुटेका छन् प्रिप्रोसेसर म्याक्रो_ xcs _MODE_, _xcs VERSION, _xc, र xcs कम्पाइलरद्वारा स्वचालित रूपमा परिभाषित गरिएको थिएन। यी अब उपलब्ध छन्।

संस्करण 2.05

आन्तरिक कम्पाइलर त्रुटि (XCS-1822) विन्डोज अन्तर्गत निर्माण गर्दा, कोड अनुकूलन गर्दा आन्तरिक कम्पाइलर त्रुटि उत्पन्न भएको हुन सक्छ।
RAM ओभरफ्लो पत्ता लागेन (XCS-1800, XCS-1796) उपलब्ध RAM भन्दा बढी भएका कार्यक्रमहरू केही परिस्थितिहरूमा कम्पाइलरले पत्ता लगाएनन्, रनटाइम कोड विफलताको परिणामस्वरूप।
फ्ल्यास मेमोरी (XCS-1792) avrxmega3 र avrtiny यन्त्रहरूका लागि, फ्ल्यास मेमोरीका भागहरू MPLAB X IDE द्वारा प्रोग्राम नगरी छोडिएको हुन सक्छ।
मुख्य कार्यान्वयन गर्न असफल (XCS-1788) केही परिस्थितिहरूमा जहाँ कार्यक्रममा कुनै विश्वव्यापी चर परिभाषित थिएन, रनटाइम स्टार्टअप कोड बाहिर निस्किएन र मुख्य () प्रकार्य कहिल्यै पुगेन।
गलत मेमोरी जानकारी (XCS-1787) avrxmega3 र avrtiny यन्त्रहरूका लागि, avr-साइज कार्यक्रमले कार्यक्रम मेमोरीको सट्टा RAM उपभोग गरिरहेको मात्र पढ्ने डाटाले रिपोर्ट गरिरहेको थियो।
गलत कार्यक्रम मेमोरी पढियो (XCS-1783) डेटा ठेगाना स्पेसमा म्याप गरिएको प्रोग्राम मेमोरी भएका यन्त्रहरूका लागि कम्पाइल गरिएका परियोजनाहरू र PROGMEM म्याक्रो/विशेषता प्रयोग गरी वस्तुहरू परिभाषित गर्नेहरूले यी वस्तुहरू गलत ठेगानाबाट पढेका हुन सक्छन्।
विशेषताहरूसँग आन्तरिक त्रुटि (XCS-1773) यदि तपाईँले सूचक वस्तुहरू को साथ परिभाषित गर्नुभयो भने आन्तरिक त्रुटि देखा पर्‍यो
_at () वा विशेषता() टोकनहरू सूचक नाम र dereferenced प्रकार बीचमा, उदाहरणका लागिampले, चार*
_at ( 0x80015 0) cp; यस्तो कोडको सामना गरेमा अब चेतावनी जारी गरिएको छ।
मुख्य कार्यान्वयन गर्न असफल (XCS-1780, XCS-1767, XCS-1754) EEPROM चरहरू प्रयोग गरेर वा कन्फिग प्राग्मा प्रयोग गरेर फ्यूजहरू परिभाषित गर्दा मुख्य () मा पुग्नु अघि रनटाइम स्टार्टअप कोडमा गलत डाटा प्रारम्भिकरण र/वा कार्यक्रम कार्यान्वयन लक गरिएको हुन सक्छ।
साना यन्त्रहरूसँग फ्यूज त्रुटि (XCS-1778, XCS-1742) attiny4/5/9/10/20/40 यन्त्रहरूसँग तिनीहरूको हेडरमा निर्दिष्ट गरिएको गलत फ्यूज लम्बाइ थियो। files जसले फ्यूजहरू परिभाषित गर्ने कोड निर्माण गर्ने प्रयास गर्दा लिङ्कर त्रुटिहरू निम्त्याउँछ।
विभाजन दोष (XCS-1777) एक रुकावट विभाजन गल्ती सच्याइएको छ।
एसेम्बलर दुर्घटना (XCS-1761) Ubuntu 18 अन्तर्गत कम्पाइलर चलाउँदा avr-as एसेम्बलर क्र्यास भएको हुन सक्छ।
वस्तुहरू खाली छैनन् (XCS-1752) सुरु नगरिएको स्थिर भण्डारण अवधि वस्तुहरू रनटाइम स्टार्टअप कोड द्वारा खाली नगरिएको हुन सक्छ।
विवादित उपकरण विशिष्टतालाई बेवास्ता गरियो (XCS-1749) कम्पाइलरले त्रुटि उत्पन्न गर्दैन जब धेरै यन्त्र विशिष्टता विकल्पहरू प्रयोग गरिन र विभिन्न यन्त्रहरूलाई संकेत गरेको थियो।
हिप द्वारा मेमोरी भ्रष्टाचार (XCS-1748) heap_ स्टार्ट प्रतीक गलत तरिकाले सेट गरिएको थियो, जसको परिणामस्वरूप सामान्य चरहरू हिपद्वारा भ्रष्ट हुने सम्भावना हुन्छ।
लिङ्कर स्थानान्तरण त्रुटि (XCS-1739) कोडमा rjmp वा rcal 4k बाइट टाढा लक्ष्य भएको हुँदा लिङ्कर स्थानान्तरण त्रुटि उत्सर्जन भएको हुन सक्छ।

संस्करण 2.00

कुनै पनि छैन।

ज्ञात मुद्दाहरू

कम्पाइलरको सञ्चालनमा निम्न सीमितताहरू छन्। यी सामान्य कोडिङ प्रतिबन्धहरू हुन सक्छन्, वा
प्रयोगकर्ताको म्यानुअलमा समावेश जानकारीबाट विचलन। शीर्षकमा कोष्ठक लगाइएको लेबल (हरू) ट्र्याकिङ डेटाबेसमा मुद्दाको पहिचान हो। यदि तपाईंलाई सहयोगलाई सम्पर्क गर्न आवश्यक छ भने यो लाभदायक हुन सक्छ। ती वस्तुहरू जसमा लेबलहरू छैनन् तिनीहरू सीमितताहरू हुन् जसले मोड अपरेन्डी वर्णन गर्दछ र जुन स्थायी रूपमा प्रभावमा रहने सम्भावना हुन्छ।

MPLAB X IDE एकीकरण

MPLAB IDE एकीकरण यदि कम्पाइलर MPLAB IDE बाट प्रयोग गर्ने हो भने, तपाईंले कम्पाइलर स्थापना गर्नु अघि MPLAB IDE स्थापना गर्नुपर्छ।

कोड जेनेरेसन

PA मेमोरी आवंटन विफलता (XCS-2881) प्रक्रियात्मक अमूर्त अप्टिमाइजरहरू प्रयोग गर्दा, लिङ्करले मेमोरी आवंटन त्रुटिहरू रिपोर्ट गर्न सक्छ जब कोड साइज उपकरणमा उपलब्ध प्रोग्राम मेमोरीको मात्राको नजिक हुन्छ, यद्यपि प्रोग्राम उपलब्ध ठाउँमा फिट हुन सक्षम हुनुपर्छ।
त्यति स्मार्ट Smart-IO (XCS-2872) छैन यदि कोस्ट-डेटा-इन-प्रोम सुविधा असक्षम गरिएको छ वा यदि यन्त्रले यसको सबै फ्ल्यास डेटा मेमोरीमा म्याप गरेको छ भने कम्पाइलरको स्मार्ट-आईओ सुविधाले स्प्रिन्ट प्रकार्यको लागि मान्य तर सब इष्टतम कोड उत्पन्न गर्नेछ।
अझ कम स्मार्ट Smart-IO (XCS-2869) कम्पाइलरको smart-io सुविधाले मान्य तर suboptimal कोड उत्पन्न गर्नेछ जब -floe र -fno-buil टिन विकल्पहरू दुवै प्रयोग गरिन्छ।
सबोप्टिमल रिड-ओन्ली डाटा प्लेसमेन्ट (XCS-2849) लिङ्कर हाल APPCODE र APPDATA मेमोरी खण्डहरू बारे सचेत छैन, न त मेमोरी नक्सामा [No-]Read-While-Write विभाजनहरू। नतिजाको रूपमा, त्यहाँ एक सानो मौका छ कि लिङ्करले मेमोरीको अनुपयुक्त क्षेत्रमा पढ्न-मात्र डेटा आवंटित गर्न सक्छ। यदि कोस्ट-डेटा-इन-प्राग्मा सुविधा सक्षम पारिएको छ भने, विशेष गरी यदि कोस्ट-डेटा-इन-कन्फिग-म्याप गरिएको-प्रोम सुविधा सक्षम पारिएको छ भने, गलत स्थानमा हुने डाटाको सम्भावना बढ्छ। यदि आवश्यक भएमा यी सुविधाहरू असक्षम गर्न सकिन्छ।
वस्तु file प्रशोधन आदेश (XCS-2863) वस्तुहरूको क्रम files लाई लिङ्कर द्वारा प्रशोधन गरिनेछ प्रक्रियात्मक अमूर्त अप्टिमाइजेसन (-mpa विकल्प) को प्रयोगको आधारमा फरक हुन सक्छ। यसले कोडलाई मात्र असर गर्छ जसले धेरै मोड्युलहरूमा कमजोर प्रकार्यहरू परिभाषित गर्दछ।
निरपेक्ष (XCS-2777) सँग लिङ्कर त्रुटि जब RAM को सुरुमा कुनै ठेगानामा वस्तु निरपेक्ष बनाइएको छ र सुरु नगरिएका वस्तुहरू पनि परिभाषित गरिएको छ, लिङ्कर त्रुटि ट्रिगर हुन सक्छ।
छोटो वेक-अप आईडीहरू (XCS-2775) ATA5700/2 यन्त्रहरूका लागि, PHID0/1 रेजिस्टरहरूलाई 16 बिट चौडाइको सट्टा 32 बिट चौडाको रूपमा मात्र परिभाषित गरिएको छ।
प्रतीक कल गर्दा लिङ्कर क्र्यास (XCS-2758) यदि स्रोत कोडले -Wl, -defsym लिङ्कर विकल्प प्रयोग गरी परिभाषित गरिएको प्रतीकलाई कल गर्दा -merlad ड्राइभर विकल्प प्रयोग गरिन्छ भने लिङ्कर क्र्यास हुन सक्छ।
गलत प्रारम्भिकरण (XCS-2679) त्यहाँ केही विश्वव्यापी/स्थिर बाइट-साइज वस्तुहरूका लागि प्रारम्भिक मानहरू डेटा मेमोरीमा राखिएको छ र रनटाइममा चरहरू पहुँच गरिनेछ भन्ने बीचमा भिन्नता छ।
सुरु भयो गलत सेटहरू खाली (XCS-2652) उल्लेखित () द्वारा रूपान्तरणको लागि विषय स्ट्रिङमा घातांक ढाँचामा फ्लोटिंग-पोइन्ट नम्बर जस्तो देखिन्छ र त्यहाँ e क्यारेक्टर पछि एक अप्रत्याशित क्यारेक्टर छ भने, खाली ठेगाना, यदि उपलब्ध गराइयो भने, वर्णलाई संकेत गर्नेछ। e र e आफैं होइन। पूर्वका लागिample: भनिएको ("hooey", खाली); x क्यारेक्टरमा पोइन्टिङ खाली हुनेछ।
खराब अप्रत्यक्ष प्रकार्य कलहरू (XCS-2628) केहि उदाहरणहरूमा, संरचनाको भागको रूपमा भण्डारण गरिएको प्रकार्य सूचक मार्फत गरिएको प्रकार्य कलहरू असफल हुन सक्छ।
strtof ले हेक्साडेसिमल फ्लोट्सको लागि शून्य फर्काउँछ (XCS-2626) पुस्तकालय प्रकार्यहरू strtof () et al र scanf () et al, सधैं हेक्साडेसिमल फ्लोटिंग-पोइन्ट नम्बरलाई रूपान्तरण गर्दछ जसले घातांक निर्दिष्ट गर्दैन।
शून्य पूर्वका लागिample: स्टेटर ("उल्ल", र खाली); मान 0 फर्काउनेछ, 1 होइन।
गलत स्ट्याक सल्लाहकार सन्देश (XCS-2542, XCS-2541) केहि उदाहरणहरूमा, प्रयोग गरिएको पुनरावृत्ति वा अनिश्चित स्ट्याक सम्बन्धी स्ट्याक सल्लाहकार चेतावनी (सम्भवतः alloca() को प्रयोग मार्फत) उत्सर्जित हुँदैन।
डुप्लिकेट अवरोध कोड (XCS-2421) को साथ विफलता जहाँ एक भन्दा बढी अवरोध प्रकार्य एउटै शरीर हुन्छ, कम्पाइलरसँग एउटा अवरोध प्रकार्यको लागि अर्कोलाई कल गर्न आउटपुट हुन सक्छ। यसले गर्दा सबै कल-क्लोबर्ड रेजिस्टरहरू अनावश्यक रूपमा बचत हुनेछन्, र हालको अवरोध ह्यान्डलरको एपिलग चल्नु अघि नै अवरोधहरू सक्षम हुनेछन्, जसले कोड विफलता निम्त्याउन सक्छ।
Const वस्तुहरू कार्यक्रम मेमोरीमा छैनन् (XCS-2408) avrxmega3 र avertins प्रोजेक्टहरूका लागि undealized const वस्तुहरूलाई डाटा मेमोरीमा राखिन्छ, यद्यपि चेतावनीले उनीहरूलाई प्रोग्राम मेमोरीमा राखिएको हुन्छ। यसले डाटा मेमोरी स्पेसमा म्याप गरिएको प्रोग्राम मेमोरी नभएका यन्त्रहरूलाई असर गर्दैन, न त प्रारम्भ गरिएको कुनै पनि वस्तुलाई असर गर्नेछ।
अवैध DFP पथ (XCS-2376) सँग खराब आउटपुट यदि कम्पाइलर अवैध DFP पथ र 'विशिष्ट' संग बोलाइएको छ file चयन गरिएको यन्त्रको लागि अवस्थित छ, कम्पाइलरले हराएको उपकरण परिवार प्याक रिपोर्ट गर्दैन र यसको सट्टा 'विशेष' चयन गर्दैछ। file, जसले त्यसपछि अवैध आउटपुट निम्त्याउन सक्छ। 'विशिष्ट' files वितरित DFPs सँग अप टु डेट नहुन सक्छ र आन्तरिक कम्पाइलर परीक्षणको साथ प्रयोगको लागि मात्र हो।
मेमोरी ओभरल्याप पत्ता लागेन (XCS-1966) कम्पाइलरले ठेगानामा निरपेक्ष बनाइएको वस्तुहरूको मेमोरी ओभरल्याप पत्ता लगाएको छैन (मा () मार्फत) र खण्ड () निर्दिष्टकर्ता प्रयोग गरी अन्य वस्तुहरू र जुन एउटै ठेगानामा लिङ्क गरिएको छ।
पुस्तकालय प्रकार्य र _meme (XCS-1763) को साथ विफलता _memo ठेगाना स्थानमा तर्कको साथ लिम्बिक फ्लोट प्रकार्यहरू असफल हुन सक्छ। नोट गर्नुहोस् कि पुस्तकालय दिनचर्याहरू केही C अपरेटरहरूबाट बोलाइन्छ, त्यसैले, उदाहरणका लागिample, निम्न कोड प्रभावित छ: regFloatVar > memxFloatVar फर्काउनुहोस्;
सीमित लिम्बिक कार्यान्वयन (AVRTC-731) ATTiny4/5/9/10/20/40 उत्पादनहरूको लागि, लिम्बिकमा मानक C / गणित पुस्तकालय कार्यान्वयन धेरै सीमित छ वा अवस्थित छैन।
कार्यक्रम मेमोरी सीमितता (AVRTC-732) 128 kb भन्दा माथिको कार्यक्रम मेमोरी छविहरू टूलचेन द्वारा समर्थित छन्; यद्यपि, त्यहाँ -relax विकल्प प्रयोग गर्दा आवश्यक प्रकार्य स्टबहरू उत्पन्न गर्नुको सट्टा आराम बिना र उपयोगी त्रुटि सन्देश बिना लिङ्कर रद्द गर्ने ज्ञात उदाहरणहरू छन्।
नाम स्पेस सीमाहरू (AVRTC-733) नाम दिइएको ठेगाना स्पेसहरू टूलचेनद्वारा समर्थित छन्, प्रयोगकर्ताको गाइड खण्ड विशेष प्रकार योग्यताहरूमा उल्लेख गरिएका सीमितताहरूको अधीनमा।
समय क्षेत्रहरू द पुस्तकालय प्रकार्यहरूले GMT मान्छन् र स्थानीय समय क्षेत्रहरूलाई समर्थन गर्दैन, यसरी स्थानीय समय () ले gummite () को रूपमा उही समय फर्काउनेछ।ample।

ग्राहक समर्थन

file:///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ A VR को लागि। htm

कागजातहरू / स्रोतहरू

MICROCHIP MPLAB XC8 C कम्पाइलर सफ्टवेयर [pdf] मालिकको म्यानुअल
MPLAB XC8 C, MPLAB XC8 C कम्पाइलर सफ्टवेयर, कम्पाइलर सफ्टवेयर, सफ्टवेयर

सन्दर्भहरू

एक टिप्पणी छोड्नुहोस्

तपाईंको इमेल ठेगाना प्रकाशित गरिने छैन। आवश्यक क्षेत्रहरू चिन्ह लगाइएका छन् *