माइक्रोचिप - लोगोAVR MCU के लिए MPLAB XC8 C कंपाइलर संस्करण 2.39 रिलीज़ नोट्स
उपयोगकर्ता गाइड

इस दस्तावेज़ में माइक्रोचिप AVR उपकरणों को लक्षित करते समय MPLAB XC8 C संकलक से संबंधित महत्वपूर्ण जानकारी शामिल है। कृपया इस सॉफ़्टवेयर को चलाने से पहले इसे पढ़ें।
यदि आप 8-बिट पिक्चर उपकरणों के लिए कंपाइलर का उपयोग कर रहे हैं, तो चित्र दस्तावेज़ के लिए MPLAB XC8 C कंपाइलर रिलीज़ नोट देखें।

ऊपरview

1.1 परिचय
माइक्रोचिप MPLAB® XC8 C कंपाइलर का यह रिलीज एक कार्यात्मक सुरक्षा कंपाइलर है, जो इस कंपाइलर के v2.36 रिलीज पर आधारित है और जो अब नेटवर्क सर्वर लाइसेंस का समर्थन करता है।
1.2. रिलीज की तारीख
इस कंपाइलर संस्करण की आधिकारिक रिलीज की तारीख 27 जनवरी 2022 है।
1.3। पिछला संस्करण
पिछला MPLAB XC8 C कंपाइलर संस्करण 2.36 था, जो 25 जनवरी 2022 को जारी किया गया था।
1.4। कार्यात्मक सुरक्षा मैनुअल
जब आप कार्यात्मक सुरक्षा लाइसेंस खरीदते हैं तो MPLAB XC कंपाइलर्स के लिए एक कार्यात्मक सुरक्षा मैनुअल प्रलेखन पैकेज में उपलब्ध होता है।
1.5। घटक लाइसेंस और संस्करण ® MPLAB
एवीआर एमसीयू टूल के लिए एक्ससी8 सी कंपाइलर जीएनयू जनरल पब्लिक लाइसेंस (जीपीएल) के तहत लिखा और वितरित किया जाता है, जिसका अर्थ है कि इसका स्रोत कोड स्वतंत्र रूप से वितरित और जनता के लिए उपलब्ध है।
जीएनयू जीपीएल के तहत उपकरणों के स्रोत कोड को माइक्रोचिप से अलग से डाउनलोड किया जा सकता है webसाइट। आप अपनी स्थापना licence.txt avr/doc निर्देशिका की उपनिर्देशिका स्थित नाम की फ़ाइल में GNU GPL पढ़ सकते हैं। जीपीएल में अंतर्निहित सिद्धांतों की एक सामान्य चर्चा यहां पाई जा सकती है।
हेडर फाइल, लिंकर स्क्रिप्ट और रनटाइम लाइब्रेरी के लिए प्रदान किया गया समर्थन कोड मालिकाना कोड है और जीपीएल के अंतर्गत नहीं आता है।
यह कंपाइलर GCC संस्करण 5.4.0, बिनुटिल्स संस्करण 2.26 का कार्यान्वयन है, और avr-libc संस्करण 2.0.0 का उपयोग करता है।
1.6. सिस्टम आवश्यकताएँ
MPLAB XC8 C कंपाइलर और इसके द्वारा उपयोग किए जाने वाले लाइसेंसिंग सॉफ़्टवेयर विभिन्न प्रकार के ऑपरेटिंग सिस्टम के लिए उपलब्ध हैं, जिनमें निम्नलिखित के 64-बिट संस्करण शामिल हैं: Microsoft Windows 10 के व्यावसायिक संस्करण; उबंटू 18.04; और macOS 10.15.5। विंडोज के लिए बायनेरिज़ को कोड-हस्ताक्षरित किया गया है। MacOS के लिए बायनेरिज़ को कोड-हस्ताक्षरित और नोटरीकृत किया गया है।
यदि आप एक नेटवर्क लाइसेंस सर्वर चला रहे हैं, तो केवल कंपाइलर द्वारा समर्थित ऑपरेटिंग सिस्टम वाले कंप्यूटर का उपयोग लाइसेंस सर्वर को होस्ट करने के लिए किया जा सकता है। एक्ससीएलएम संस्करण 2.0 के अनुसार, नेटवर्क लाइसेंस सर्वर को माइक्रोसॉफ्ट विंडोज सर्वर प्लेटफॉर्म पर स्थापित किया जा सकता है, लेकिन लाइसेंस सर्वर को ऑपरेटिंग सिस्टम के सर्वर संस्करण पर चलाने की आवश्यकता नहीं है।
1.7। उपकरणों का समर्थन किया
यह कंपाइलर रिलीज के समय ज्ञात सभी 8-बिट एवीआर एमसीयू उपकरणों का समर्थन करता है। देखें (संकलक में avr_chipinfo.html निर्देशिका) सभी समर्थित उपकरणों की सूची के लिए। ये फ़ाइलें प्रत्येक डिवाइस के लिए कॉन्फ़िगरेशन बिट दस्तावेज़ सेटिंग्स को भी सूचीबद्ध करती हैं।
1.8। संस्करण और लाइसेंस उन्नयन
MPLAB XC8 कंपाइलर को एक लाइसेंस प्राप्त (PRO) या बिना लाइसेंस वाले (निःशुल्क) उत्पाद के रूप में सक्रिय किया जा सकता है। अपने कंपाइलर को लाइसेंस देने के लिए आपको एक एक्टिवेशन कुंजी खरीदनी होगी। एक लाइसेंस मुफ्त उत्पाद की तुलना में उच्च स्तर के अनुकूलन की अनुमति देता है। एक लाइसेंस रहित संकलक बिना लाइसेंस के अनिश्चित काल तक संचालित किया जा सकता है।
एक MPLAB XC8 कार्यात्मक सुरक्षा संकलक को माइक्रोचिप से खरीदे गए कार्यात्मक सुरक्षा लाइसेंस के साथ सक्रिय किया जाना चाहिए। कंपाइलर इस लाइसेंस के बिना काम नहीं करेगा। एक बार सक्रिय हो जाने पर, आप किसी भी अनुकूलन स्तर का चयन कर सकते हैं और सभी कंपाइलर सुविधाओं का उपयोग कर सकते हैं। एमपीएलएबी एक्ससी कार्यात्मक सुरक्षा की यह रिलीज
कंपाइलर नेटवर्क सर्वर लाइसेंस का समर्थन करता है।
लाइसेंस प्रकार और लाइसेंस के साथ कंपाइलर की स्थापना के बारे में जानकारी के लिए एमपीएलएबी एक्ससी सी कंपाइलर्स (डीएस 50002059) की स्थापना और लाइसेंसिंग दस्तावेज़ देखें।
1.9. स्थापना और सक्रियण
इस कंपाइलर के साथ शामिल नवीनतम लाइसेंस मैनेजर के बारे में महत्वपूर्ण जानकारी के लिए माइग्रेशन मुद्दे और सीमाएं अनुभाग भी देखें।
यदि MPLAB IDE का उपयोग कर रहे हैं, तो इस उपकरण को स्थापित करने से पहले नवीनतम MPLAB X IDE संस्करण 5.0 या बाद के संस्करण को स्थापित करना सुनिश्चित करें। कंपाइलर स्थापित करने से पहले आईडीई से बाहर निकलें। (Windows), (Linux) या (macOS) .exe .run .app कंपाइलर इंस्टॉलर एप्लिकेशन चलाएं, उदाहरण के लिए और स्क्रीन पर दिए गए निर्देशों का पालन करें।
XC8-1.00.11403-windows.exe
डिफ़ॉल्ट स्थापना निर्देशिका की सिफारिश की जाती है। यदि आप लिनक्स का उपयोग कर रहे हैं, तो आपको टर्मिनल का उपयोग करके और रूट खाते से कंपाइलर स्थापित करना होगा। व्यवस्थापकीय विशेषाधिकारों वाले macOS खाते का उपयोग करके इंस्टॉल करें।
स्थापना के लिए अब सक्रियण अलग से किया जाता है। अधिक जानकारी के लिए दस्तावेज़ MPLAB® XC C कंपाइलर्स (DS52059) के लिए लाइसेंस प्रबंधक देखें।
यदि आप मूल्यांकन लाइसेंस के तहत संकलक को चलाना चुनते हैं, तो अब आपको संकलन के दौरान एक चेतावनी मिलेगी जब आप अपनी मूल्यांकन अवधि के अंत के 14 दिनों के भीतर होंगे। यदि आप अपनी एचपीए सदस्यता समाप्त होने के 14 दिनों के भीतर हैं तो वही चेतावनी जारी की जाती है।
XC नेटवर्क लाइसेंस सर्वर एक अलग इंस्टॉलर है और एकल-उपयोगकर्ता कंपाइलर इंस्टॉलर में शामिल नहीं है।
XC लाइसेंस मैनेजर अब फ्लोटिंग नेटवर्क लाइसेंस के रोमिंग का समर्थन करता है। मोबाइल उपयोगकर्ताओं के उद्देश्य से, यह सुविधा फ़्लोटिंग लाइसेंस को थोड़े समय के लिए नेटवर्क बंद करने की अनुमति देती है। इस सुविधा का उपयोग करके, आप नेटवर्क से डिस्कनेक्ट कर सकते हैं और फिर भी अपने MPLAB XC कंपाइलर का उपयोग कर सकते हैं। इस सुविधा के बारे में अधिक जानकारी के लिए XCLM इंस्टॉल का दस्तावेज़ फ़ोल्डर देखें।
MPLAB X IDE में रोमिंग को दृष्टिगत रूप से प्रबंधित करने के लिए एक लाइसेंस विंडो (टूल्स> लाइसेंस) शामिल है।

1.9.1। स्थापना संबंधी समस्याओं का समाधान करना
यदि आप किसी भी विंडोज ऑपरेटिंग सिस्टम के तहत कंपाइलर को स्थापित करने में कठिनाइयों का अनुभव करते हैं, तो निम्न सुझावों का प्रयास करें।

  • इंस्टॉल को व्यवस्थापक के रूप में चलाएं।
  • इंस्टॉलर एप्लिकेशन की अनुमतियों को 'पूर्ण नियंत्रण' पर सेट करें। (फ़ाइल पर राइट-क्लिक करें, गुण चुनें, सुरक्षा टैब, उपयोगकर्ता चुनें, संपादित करें।)
  • अस्थायी फ़ोल्डर की अनुमतियों को "पूर्ण नियंत्रण" पर सेट करें।
  • अस्थायी फ़ोल्डर का स्थान निर्धारित करने के लिए, रन कमांड (विंडोज लोगो कुंजी + आर) में टाइप करें। %temp% यह उस निर्देशिका को दिखाते हुए एक फ़ाइल एक्सप्लोरर संवाद खोलेगा और आपको उस फ़ोल्डर का पथ निर्धारित करने की अनुमति देगा।

1.10। संकलक प्रलेखन

माइक्रोचिप एमपीएलएबी एक्ससी8 सी कंपाइलर वर्जन 2.39 रिलीज नोट्स एवीआर एमसीयू के लिए - दस्तावेजकम्पाइलर के यूजर गाइड को HTML पेज से खोला जा सकता है जो आपके ब्राउज़र में MPLAB X IDE डैशबोर्ड में नीले रंग के हेल्प बटन पर क्लिक करने पर खुलता है, जैसा कि स्क्रीनशॉट में दिखाया गया है।
यदि आप 8-बिट AVR लक्ष्यों के लिए निर्माण कर रहे हैं, तो AVR के लिए MPLAB® XC8 C कंपाइलर उपयोगकर्ता® गाइड
MCU में उन कंपाइलर विकल्पों और सुविधाओं की जानकारी होती है जो इस आर्किटेक्चर पर लागू होते हैं।

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

दस्तावेज़ीकरण अद्यतन

MPLAB XC8 प्रलेखन के ऑन-लाइन और अप-टू-डेट संस्करणों के लिए, कृपया माइक्रोचिप के ऑनलाइन पर जाएं
तकनीकी दस्तावेज़ीकरण webसाइट।
इस रिलीज़ में नया या अपडेट किया गया AVR दस्तावेज़ीकरण:
MPLAB® XC C कंपाइलर (DS50002059) संशोधन एल को स्थापित करना और लाइसेंस देना
माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी रेफरेंस गाइड माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी द्वारा परिभाषित कार्यों के साथ-साथ लाइब्रेरी प्रकारों और मैक्रोज़ के इच्छित उपयोग के व्यवहार और इंटरफ़ेस का वर्णन करता है। इस जानकारी में से कुछ पूर्व में AVR के लिए MPLA® XC8 C Compiler User!s Guide® में निहित थी
एमसीयू। डिवाइस-विशिष्ट लाइब्रेरी जानकारी अभी भी इस कंपाइलर गाइड में निहित है।
इस रिलीज में हेक्समेट उपयोगकर्ता गाइड को निर्देशिका में शामिल किया गया है। यह मार्गदर्शिका उन डॉक्स के लिए अभिप्रेत है जो Hexmate को स्टैंड-अलोन एप्लिकेशन के रूप में चला रहे हैं।
निम्नलिखित खंड संकलक के साथ भेजे गए उपयोगकर्ता के गाइड में पाए गए सुधार और अतिरिक्त जानकारी प्रदान करते हैं।

2.1। स्मार्ट-आईओ-प्रारूप विकल्प
The-msmart-io-format=fmt fmt विकल्प, जहाँ स्वरूपित IO रूपांतरण विनिर्देशों वाली एक स्ट्रिंग है, संकलक को सूचित करता है कि सूचीबद्ध विनिर्देशों का उपयोग स्मार्ट IO फ़ंक्शन द्वारा किया जाता है।
कोड आकार को कम करने के लिए, कंपाइलर स्मार्ट आईओ कार्यों के प्रिंट और स्कैन परिवारों से जुड़े लाइब्रेरी कोड को अनुकूलित करता है, जो इन कार्यों के लिए सभी कॉलों में एकत्रित प्रारूप स्ट्रिंग्स में मौजूद रूपांतरण विनिर्देशों के आधार पर होता है। यह सुविधा पूरी तरह से स्वचालित है और इसे अक्षम नहीं किया जा सकता है।
कुछ स्थितियों में, कंपाइलर स्वरूपित IO फ़ंक्शन कॉल से उपयोग की जानकारी निर्धारित करने में असमर्थ होता है। यदि विकल्प का उपयोग किया गया है, तो इन कार्यों के लिए आवश्यक रूपांतरण विनिर्देश स्ट्रिंग से प्राप्त किए जाते हैं; अन्यथा, कंपाइलर -msmart-io-format=fmt fmt फ़ंक्शंस के उपयोग के बारे में कोई धारणा नहीं बनाता है और यह सुनिश्चित करता है कि पूरी तरह कार्यात्मक स्वरूपित IO फ़ंक्शंस अंतिम प्रोग्राम छवि में जुड़े हुए हैं।
उदाहरणार्थampले, स्मार्ट आईओ कार्यों के लिए निम्नलिखित कॉलों पर विचार करें।

vscanf ("%d:%li", va_list1);
vprintf ("% - s% d", va_list2);
vprintf(fmt1, va_list3);// अस्पष्ट उपयोग
vscanf(fmt2, va_list4);// अस्पष्ट उपयोग

अंतिम दो कॉलों को संसाधित करते समय, कंपाइलर किसी भी उपयोग की जानकारी को न तो प्रारूप स्ट्रिंग्स से और न ही तर्कों से निकाल सकता है। इन उदाहरणों में, -msmart-io-format विकल्प का उपयोग किया जा सकता है और संभावित रूप से अधिक इष्टतम स्वरूपित I0 फ़ंक्शंस उत्पन्न करने की अनुमति देगा, इस प्रकार प्रोग्राम के कोड आकार को कम करेगा। पूर्व के लिएampले, अगर fmtl और fmt2 द्वारा इंगित प्रारूप स्ट्रिंग्स सामूहिक रूप से केवल "%d", "%i" और "% s" रूपांतरण विनिर्देशकों का उपयोग करते हैं, -msmart-io-format=fmt="%d%i%s ” विकल्प जारी किया जाना चाहिए।

टिंट स्ट्रिंग में झंडे और संशोधक सहित कोई भी मान्य रूपांतरण विनिर्देश हो सकता है (उदाहरण के लिएampले "% -13। 91s"), और उन कार्यों द्वारा उपयोग किए गए सटीक रूप से प्रतिबिंबित करना चाहिए जिनका उपयोग अस्पष्ट है। में एक विनिर्देश शामिल करने में विफलता अंश तर्क जहां इसे स्वरूपित I0 फ़ंक्शंस द्वारा उपयोग किया गया है, उसके परिणामस्वरूप कोड विफलता हो सकती है।
यदि fmt एक खाली स्ट्रिंग है या इसमें कोई स्पष्ट रूपांतरण विनिर्देश नहीं हैं, तो एक चेतावनी जारी की जाएगी और पूरी तरह कार्यात्मक स्वरूपित I0 फ़ंक्शन को अंतिम प्रोग्राम छवि में जोड़ा जाएगा।
कमांड लाइन पर इस विकल्प का कई बार उपयोग किया जा सकता है। प्रत्येक विकल्प के साथ उपयोग किए जाने वाले रूपांतरण विनिर्देश संचित होते हैं।

2.2। लोप-फ्रेम-सूचक विकल्प
- f omit- फ्रेम-पॉइंटर विकल्प कंपाइलर को स्टैक पर ऑब्जेक्ट्स तक पहुंचने के लिए सीधे स्टैक पॉइंटर का उपयोग करने का निर्देश देता है और यदि संभव हो तो कोड को छोड़ देता है जो फ्रेम रजिस्टर को सहेजता है, आरंभ करता है और पुनर्स्थापित करता है। यह सभी गैर-शून्य अनुकूलन स्तरों पर स्वचालित रूप से सक्षम होता है।
-fno-omit- फ्रेम-पॉइंटर का उपयोग करके विकल्प को नकारना, अनुकूलित कोड डीबग करने में सहायता कर सकता है; हालाँकि, यह विकल्प गारंटी नहीं देता है कि फ़्रेम पॉइंटर का हमेशा उपयोग किया जाएगा।

2.3। अनरोल-लूप्स विकल्प
- funrol I-loops और -(unroll-all-loops) विकल्प स्पीड-ओरिएंटेड ऑप्टिमाइज़ेशन को नियंत्रित करते हैं जो लूप में ब्रांचिंग देरी को दूर करने का प्रयास करते हैं। अनियंत्रित लूप आमतौर पर बड़े कोड आकार की कीमत पर उत्पन्न कोड की निष्पादन गति को बढ़ाते हैं।
- funrol I-loops विकल्प उन लूपों को खोल देता है जहां पुनरावृत्तियों की संख्या संकलन समय पर निर्धारित की जा सकती है या जब कोड लूप में प्रवेश करता है। -फनरोल-ऑल-लूप्स विकल्प अधिक आक्रामक है, सभी लूपों को खोलना, भले ही पुनरावृत्तियों की संख्या अज्ञात हो। यह निष्पादन की गति में सुधार करने के लिए - funrol 1-loops विकल्प की तुलना में आम तौर पर कम प्रभावी है।

2.4। वसा-इतो-वस्तुएँ विकल्प
-F fat-1 to-obj ects विकल्प अनुरोध करता है कि संकलक वसा वस्तु उत्पन्न करता है fileएस, जिसमें दोनों शामिल हैं
ऑब्जेक्ट कोड और GIMPLE (GCC के आंतरिक अभ्यावेदन में से एक), अद्वितीय ELF अनुभागों के लिए लिखा गया है। ऐसी वस्तुएं files लाइब्रेरी कोड के लिए उपयोगी होते हैं जिन्हें उन परियोजनाओं से जोड़ा जा सकता है जो -flto विकल्प द्वारा नियंत्रित मानक लिंक-टाइम ऑप्टिमाइज़र का उपयोग करते हैं और नहीं करते हैं।
इस विकल्प का - fno-fat-lto-objects रूप, जो डिफ़ॉल्ट है यदि कोई विकल्प निर्दिष्ट नहीं है, ऑब्जेक्ट कोड को ऑब्जेक्ट में शामिल करने को दबा देता है files, जिसके परिणामस्वरूप तेजी से निर्माण होता है। हालाँकि, ऐसी वस्तु fileएस को हमेशा मानक लिंक-टाइम ऑप्टिमाइज़र का उपयोग करके लिंक किया जाना चाहिए।

2.5। इतो-विभाजन विकल्प
द – फ्लतो-पार्टी पर = एक इगो री थम विकल्प ऑब्जेक्ट को विभाजित करने के लिए उपयोग किए जाने वाले एल्गोरिदम को नियंत्रित करता है fileलिंक-टाइम ऑप्टिमाइज़र चलाते समय। तर्क कोई भी पूरी तरह से विभाजन को अक्षम नहीं करता है और पूरे प्रोग्राम विश्लेषण (डब्ल्यूपीए) चरण से सीधे लिंक-टाइम ऑप्टिमाइज़ेशन चरण को निष्पादित करता है। ऑपरेशन का यह तरीका बड़ी कंपाइलर मेमोरी आवश्यकताओं और लंबे समय तक निर्माण की कीमत पर सबसे इष्टतम परिणाम देगा, हालांकि यह छोटे कार्यक्रमों के साथ एक समस्या होने की संभावना नहीं है। वस्तु का विभाजन files बिल्ड प्रदर्शन में सुधार कर सकता है। तर्क एक निर्दिष्ट करता है कि वास्तव में एक विभाजन का उपयोग किया जाना चाहिए, और तर्क lto1 उस विभाजन को निर्दिष्ट करता है जो मूल स्रोत द्वारा तय किए गए दर्पण fileएस। डिफ़ॉल्ट तर्क संतुलित है, जो संभव होने पर विभाजन को समान आकार के हिस्सों में निर्दिष्ट करता है।

2.6। खंड 3.6.11 मैप किए गए लिंकर विकल्पों में वृद्धि
द -व्ल, -अनुभाग-प्रारंभ = सेकंड tion = addr आमतौर पर उपयोग किए जाने वाले लिंकर विकल्पों की तालिका से गायब है, जिसे -wl कंपाइलर ड्राइवर विकल्प का उपयोग करके एक्सेस किया जा सकता है। यह विकल्प निर्दिष्ट पते पर कस्टम-नामित अनुभागों की नियुक्ति की अनुमति देता है। इसका उपयोग मानक अनुभागों को रखने के लिए नहीं किया जा सकता है, जैसे ( . डेटा, . बीएसएस, . टेक्स्ट), जिसे -wl, -'r विकल्प का उपयोग करके रखा जाना चाहिए।

2.7। धारा 4.14.2 में संशोधन आवंटित अनुभाग को बदलना और जोड़ना
ध्यान दें कि उपयोगकर्ता गाइड के इस खंड में निहित जानकारी के विपरीत, इस रिलीज में संकलक में किए गए परिवर्तनों का अर्थ है कि कस्टम अनुभागों को -w1 का उपयोग करके जोड़ा जा सकता है, -संप्रदाय आयन- प्रारंभ = खंड = acicir विकल्प और लिंकर स्क्रिप्ट को संशोधित किए बिना।

नया क्या है

निम्नलिखित नई एवीआर-लक्ष्य विशेषताएं हैं जो अब संकलक का समर्थन करती हैं। उपशीर्षकों में संस्करण संख्या पहले संकलक संस्करण को इंगित करती है जो आने वाली सुविधाओं का समर्थन करती है।

3.1। संस्करण 2.39 (कार्यात्मक सुरक्षा रिलीज़)
नेटवर्क सर्वर लाइसेंस MPLAB XC8 कार्यात्मक सुरक्षा संकलक की यह रिलीज नेटवर्क सर्वर लाइसेंस का समर्थन करती है।

3.2. संस्करण 2.36 
कोई नहीं।
3.3. संस्करण 2.35 
नया उपकरण समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, और AVR64DD32।
बेहतर संदर्भ स्विचिंग नया -mcall-isr-prologues विकल्प बदलता है कि इंटरप्ट फ़ंक्शन प्रविष्टि पर रजिस्टरों को कैसे सहेजता है और इंटरप्ट रूटीन समाप्त होने पर उन रजिस्टरों को कैसे पुनर्स्थापित किया जाता है। यह -mcall-prologues विकल्प के समान काम करता है, लेकिन केवल इंटरप्ट फ़ंक्शन (आईएसआर) को प्रभावित करता है।
और भी बेहतर संदर्भ स्विचिंग नई -मगैस-आईएसआर-प्रस्तावना विकल्प छोटे व्यवधान सेवा रूटीन के लिए उत्पन्न संदर्भ स्विच कोड को नियंत्रित करता है। सक्षम होने पर, इस सुविधा में रजिस्टर उपयोग के लिए असेंबलर को ISR स्कैन करना होगा और यदि आवश्यक हो तो केवल इन उपयोग किए गए रजिस्टरों को सहेजना होगा।
कॉन्फ़िगर करने योग्य फ्लैश मैपिंग AVR DA और AVR DB परिवार में कुछ उपकरणों में एक SFR (जैसे FLMAP) होता है जो निर्दिष्ट करता है कि प्रोग्राम मेमोरी के 32k सेक्शन को डेटा मेमोरी में मैप किया जाएगा। नया - mconst-data-in-config-mapped-progmem विकल्प का उपयोग लिंकर को एक 32k सेक्शन में सभी cons t- योग्य डेटा रखने के लिए किया जा सकता है और यह सुनिश्चित करने के लिए संबंधित SFR रजिस्टर को स्वचालित रूप से इनिशियलाइज़ करता है कि यह डेटा डेटा में मैप किया गया है। मेमोरी स्पेस, जहां इसे और अधिक प्रभावी ढंग से एक्सेस किया जाएगा।

माइक्रोचिप एकीकृत मानक पुस्तकालय सभी MPLAB XC कंपाइलर एक माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी साझा करेंगे, जो अब MPLAB XC8 के इस रिलीज के साथ उपलब्ध है। एमपीएलएबी® XC8 सी संकलक
एवीआर के लिए उपयोगकर्ता की गाइड® एमसीयू अब इन मानक कार्यों के लिए दस्तावेज़ीकरण शामिल नहीं है। यह जानकारी अब में पाई जा सकती है माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी रेफरेंस गाइड। ध्यान दें कि पहले avr-libc द्वारा परिभाषित कुछ कार्यक्षमता अब उपलब्ध नहीं है। (देखना पुस्तकालय की कार्यक्षमता।)
स्मार्ट आई0 नए एकीकृत पुस्तकालयों के हिस्से के रूप में, प्रिंटफ और स्कैनफ परिवारों में जॉय फ़ंक्शन अब प्रत्येक बिल्ड पर कस्टम-जेनरेट किए गए हैं, इस आधार पर कि प्रोग्राम में इन कार्यों का उपयोग कैसे किया जाता है। यह किसी प्रोग्राम द्वारा उपयोग किए जाने वाले संसाधनों को काफी हद तक कम कर सकता है।
स्मार्ट I0 सहायता विकल्प स्मार्ट I0 फ़ंक्शंस (जैसे प्रिंटफ़ () या स्कैनफ़ ()) के लिए कॉल का विश्लेषण करते समय, संकलक हमेशा प्रारूप स्ट्रिंग से निर्धारित नहीं कर सकता है या उन तर्कों से अनुमान लगा सकता है जो कॉल के लिए आवश्यक रूपांतरण विनिर्देशक हैं। पहले, कंपाइलर हमेशा कोई धारणा नहीं बनाता था और यह सुनिश्चित करता था कि पूरी तरह कार्यात्मक 10 फ़ंक्शन अंतिम प्रोग्राम छवि में जुड़े हुए थे। एक नया - msma rt-io- प्रारूप = fmt विकल्प जोड़ा गया है ताकि संकलक को इसके बजाय स्मार्ट I0 फ़ंक्शंस द्वारा उपयोग किए जाने वाले रूपांतरण विनिर्देशक के उपयोगकर्ता द्वारा सूचित किया जा सके, जिसका उपयोग अस्पष्ट है, अत्यधिक लंबे 10 रूटीन को लिंक होने से रोकता है। (देखना स्मार्ट-आईओ-प्रारूप अधिक जानकारी के लिए विकल्प।)
कस्टम अनुभागों को रखना पहले, -W1, –अनुभाग-प्रारंभ विकल्प केवल निर्दिष्ट अनुभाग को अनुरोधित पते पर रखा जाता था जब लिंकर स्क्रिप्ट उसी नाम के साथ एक आउटपुट अनुभाग परिभाषित करती थी। जब ऐसा नहीं था, तो अनुभाग को लिंकर द्वारा चुने गए पते पर रखा गया था और विकल्प को अनिवार्य रूप से अनदेखा कर दिया गया था। अब विकल्प सभी कस्टम अनुभागों के लिए सम्मानित किया जाएगा, भले ही लिंकर स्क्रिप्ट अनुभाग को परिभाषित न करे। हालाँकि, ध्यान दें कि मानक वर्गों के लिए, जैसे . मूलपाठ, । बीएसएस या । डेटा, सबसे उपयुक्त एलोकेटर का अभी भी उनके प्लेसमेंट पर पूर्ण नियंत्रण होगा, और विकल्प का कोई प्रभाव नहीं पड़ेगा। -wl का प्रयोग करें, - खंड = जोड़ विकल्प, जैसा कि उपयोगकर्ता की मार्गदर्शिका में वर्णित है।

3.4. संस्करण 2.32
स्टैक गाइडेंस प्रो कंपाइलर लाइसेंस के साथ उपलब्ध है, कंपाइलर की स्टैक गाइडेंस सुविधा का उपयोग प्रोग्राम द्वारा उपयोग किए जाने वाले किसी भी स्टैक की अधिकतम गहराई का अनुमान लगाने के लिए किया जा सकता है। यह किसी प्रोग्राम के कॉल ग्राफ़ का निर्माण और विश्लेषण करता है, प्रत्येक फ़ंक्शन के स्टैक उपयोग को निर्धारित करता है, और एक रिपोर्ट तैयार करता है, जिससे प्रोग्राम द्वारा उपयोग किए जाने वाले स्टैक की गहराई का अनुमान लगाया जा सकता है।
यह सुविधा -mchp-stack-use कमांड-लाइन विकल्प के माध्यम से सक्षम है। निष्पादन के बाद ढेर के उपयोग का सारांश मुद्रित किया जाता है। विस्तृत स्टैक रिपोर्ट मानचित्र में उपलब्ध है file, जिसे सामान्य तरीके से अनुरोध किया जा सकता है।
नया उपकरण समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, और AVR32DB48।
वापस लिया गया उपकरण समर्थन निम्न AVR भागों के लिए समर्थन अब उपलब्ध नहीं है: AVR 16DA28, AVR16DA32 और, AVR16DA48।

3.5। संस्करण 2.31 कोई नहीं।
3.6. संस्करण 2.30
डेटा इनिशियलाइज़ेशन को रोकने के लिए नया विकल्प एक नया -mno-data-init ड्राइवर विकल्प डेटा के इनिशियलाइज़ेशन और bss सेक्शन को साफ़ करने से रोकता है। यह असेंबली में do_copy_data और do_clear_bss प्रतीकों के आउटपुट को दबाकर काम करता है files, जो बदले में लिंकर द्वारा उन रूटीन को शामिल करने से रोकेगा।
उन्नत अनुकूलन कई अनुकूलन सुधार किए गए हैं, जिनमें अनावश्यक रिटर्न निर्देशों को हटाना, स्किप-इफ-बिट-है निर्देश के बाद कुछ उछाल को हटाना, और बेहतर प्रक्रियात्मक अमूर्तता और इस प्रक्रिया को पुनरावृत्त करने की क्षमता शामिल है।
इन अनुकूलनों में से कुछ को नियंत्रित करने के लिए अब अतिरिक्त विकल्प उपलब्ध हैं, विशेष रूप से -फेक्शन-एंकर, जो एक प्रतीक के सापेक्ष स्थिर वस्तुओं की पहुंच की अनुमति देता है; -एमपीए-पुनरावृत्तियों = एन, जो 2 के डिफ़ॉल्ट से प्रक्रियात्मक अमूर्त पुनरावृत्तियों की संख्या को बदलने की अनुमति देता है; और, -mpa-callcost-shortcal 1, जो अधिक आक्रामक प्रक्रियात्मक अमूर्तता करता है, इस उम्मीद में कि लिंकर लंबी कॉल को आराम दे सकता है। यदि अंतर्निहित मान्यताओं का एहसास नहीं होता है तो यह अंतिम विकल्प कोड आकार बढ़ा सकता है।
नया उपकरण समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR 128DB 32 , AVR128DB48, और AVR128DB।
वापस लिया गया डिवाइस समर्थन निम्नलिखित AVR भागों के लिए समर्थन अब उपलब्ध नहीं है: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, और ATA664251।

3.7। संस्करण 2.29 (कार्यात्मक सुरक्षा रिलीज़)
हैडर file कंपाइलर बंट-इन्स के लिए यह सुनिश्चित करने के लिए कि कंपाइलर MISRA जैसे भाषा विनिर्देशों के अनुरूप हो सकता है हैडर file, जो स्वचालित रूप से शामिल है , अद्यतन किया गया है। इस हेडर में सभी अंतर्निर्मित कार्यों के लिए प्रोटोटाइप शामिल हैं, जैसे कि निर्मित in_avr_nop ( ) और _builtin_avr_delay_cycles ( )। कुछ बिल्ट-इन MISRA के अनुरूप नहीं हो सकते हैं; इन्हें कंपाइलर कमांड लाइन में परिभाषित XC_STRICT MISRA जोड़कर छोड़ा जा सकता है। बिल्ट-इन्स और उनकी घोषणाओं को निश्चित-चौड़ाई प्रकारों का उपयोग करने के लिए अद्यतन किया गया है।

3.8. संस्करण 2.20
नया उपकरण समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: ATTINY 1624, ATTINY1626, और ATTINY 1 627।
बेहतर सर्वोत्तम फिट आवंटन कंपाइलर में बेस्ट फिट एलोकेटर (बीएफए) में सुधार किया गया है ताकि बेहतर अनुकूलन की अनुमति देने वाले क्रम में अनुभागों को आवंटित किया जा सके। बीएफए अब नामित पता रिक्त स्थान का समर्थन करता है और डेटा आरंभीकरण को बेहतर ढंग से संभालता है।
बेहतर प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अमूर्त अनुकूलन अब अधिक कोड अनुक्रमों पर किया जाता है। पिछली स्थितियों में जहां इस अनुकूलन में कोड आकार में वृद्धि हो सकती है, अनुकूलन कोड को लिंकर की कचरा संग्रह प्रक्रिया से अवगत कराकर संबोधित किया गया है।
एवीआर असेंबलर की अनुपस्थिति एवीआर असेंबलर अब इस वितरण में शामिल नहीं है। 3.9। संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।
3.10. संस्करण 2.10
कोड कवरेज़ इस रिलीज में एक कोड कवरेज सुविधा शामिल है जो किसी परियोजना के स्रोत कोड को किस हद तक निष्पादित किया गया है, इसका विश्लेषण करने की सुविधा प्रदान करता है। इसे सक्षम करने के लिए -mcodecov=ram विकल्प का प्रयोग करें। आपके हार्डवेयर पर प्रोग्राम के निष्पादन के बाद, कोड कवरेज जानकारी डिवाइस में एकत्रित की जाएगी, और इसे एमपीएलएबी एक्स आईडीई द्वारा कोड कवरेज प्लगइन के माध्यम से स्थानांतरित और प्रदर्शित किया जा सकता है। इस प्लगइन के बारे में जानकारी प्राप्त करने के लिए आईडीई दस्तावेज देखें।
कवरेज विश्लेषण से बाद के कार्यों को बाहर करने के लिए #pragma nocodecov का उपयोग किया जा सकता है। आदर्श रूप से प्रगमा को शुरुआत में जोड़ा जाना चाहिए file उस पूरे को बाहर करने के लिए file कवरेज विश्लेषण से। वैकल्पिक रूप से, _attribute_ ((nocodecov)) का उपयोग कवरेज विश्लेषण से किसी विशिष्ट कार्य को बाहर करने के लिए किया जा सकता है।
डिवाइस विवरण files नया उपकरण file कहा जाता है avr_chipinfo.html की डॉक्स निर्देशिका में स्थित है

संकलक वितरण। यह file संकलक द्वारा समर्थित सभी उपकरणों को सूचीबद्ध करता है। डिवाइस के नाम पर क्लिक करें, और यह उस डिवाइस के लिए सभी स्वीकार्य कॉन्फ़िगरेशन बिट सेटिंग/वैल्यू पेयर दिखाने वाला एक पेज खोलेगा, पूर्व के साथampलेस.

प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अमूर्त अनुकूलन, जो असेंबली कोड के सामान्य ब्लॉकों को उस ब्लॉक की एक निकाली गई प्रति के कॉल के साथ संकलक में जोड़ा गया है। ये एक अलग एप्लिकेशन द्वारा किए जाते हैं, जो स्तर 2, 3 या का चयन करते समय कंपाइलर द्वारा स्वचालित रूप से लागू किया जाता है s अनुकूलन। ये अनुकूलन कोड आकार को कम करते हैं, लेकिन वे निष्पादन की गति और कोड डिबगबिलिटी को कम कर सकते हैं।
-mno-pa विकल्प का उपयोग करके प्रक्रियात्मक अमूर्तता को उच्च अनुकूलन स्तरों पर अक्षम किया जा सकता है, या -mpa का उपयोग करके निम्न अनुकूलन स्तरों (आपके लाइसेंस के अधीन) पर सक्षम किया जा सकता है। इसे किसी वस्तु के लिए अक्षम किया जा सकता है file -मोनो-पा-ऑन-एफ इले = का उपयोग करनाfile-mno-pa-onfunotion=f का उपयोग करके किसी फ़ंक्शन के लिए नाम, या अक्षम कार्य.
आपके स्रोत कोड के अंदर, फ़ंक्शन की परिभाषा के साथ विशेषता _ ((nopa)) का उपयोग करके, या nopa का उपयोग करके, जो _attribute_ ((nopa, noinline)) तक फैलता है और इस प्रकार फ़ंक्शन इनलाइनिंग को होने से रोकता है, प्रक्रियात्मक अमूर्तता को फ़ंक्शन के लिए अक्षम किया जा सकता है और वहाँ इनलाइन कोड का अमूर्त होना।
प्रगमा में लॉक बिट सपोर्ट #pragma कॉन्फ़िगरेशन अब AVR लॉक बिट्स के साथ-साथ अन्य कॉन्फ़िगरेशन बिट्स को निर्दिष्ट करने के लिए उपयोग किया जा सकता है। Avr_chipinfo.html की जाँच करें file (ऊपर उल्लिखित) सेटिंग/वैल्यू जोड़े के लिए इस प्रागमा के साथ उपयोग करने के लिए।
नया उपकरण समर्थन समर्थन निम्नलिखित भागों के लिए उपलब्ध है: AVR28DAl28, AVR64DAl28, AVR32DAl28, और AVR48DAl28।

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

3.12. संस्करण 2.00
शीर्ष स्तर का चालक एक नया ड्राइवर, जिसे xc8 -cc कहा जाता है, अब पिछले avr-gcc ड्राइवर और xc8 ड्राइवर के ऊपर बैठता है, और यह लक्ष्य डिवाइस के चयन के आधार पर उपयुक्त कंपाइलर को कॉल कर सकता है। यह ड्राइवर जीसीसी-शैली के विकल्पों को स्वीकार करता है, जो या तो निष्पादित किए जा रहे संकलक के लिए अनुवादित या पारित किए जाते हैं। यह ड्राइवर किसी भी AVR या PIC लक्ष्य के साथ समान शब्दार्थ के साथ विकल्पों के समान सेट का उपयोग करने की अनुमति देता है और इस प्रकार संकलक को आमंत्रित करने का अनुशंसित तरीका है। यदि आवश्यक हो, तो पुराने avr-gcc ड्राइवर को पुराने कंपाइलर संस्करणों में स्वीकार किए गए पुराने-शैली विकल्पों का उपयोग करके सीधे कॉल किया जा सकता है।
सामान्य सी इंटरफ़ेस यह कंपाइलर अब एमपीएलएबी कॉमन सी इंटरफेस के अनुरूप हो सकता है, जिससे स्रोत कोड को सभी एमपीएलएबी एक्ससी कंपाइलर्स में आसानी से पोर्ट किया जा सकता है। -mext=cci विकल्प इस सुविधा का अनुरोध करता है, कई भाषा एक्सटेंशन के लिए वैकल्पिक सिंटैक्स को सक्षम करता है।
नए लाइब्रेरियन ड्राइवर ए नया लाइब्रेरियन ड्राइवर पिछले PIC लाइब्रेरियन और AVR avr-ar लाइब्रेरियन के ऊपर स्थित है। यह ड्राइवर जीसीसी-आर्काइवर-शैली के विकल्पों को स्वीकार करता है, जो या तो निष्पादित किए जा रहे लाइब्रेरियन के लिए अनुवादित या पारित किए जाते हैं। नया ड्राइवर किसी भी PIC या AVR लाइब्रेरी को बनाने या हेरफेर करने के लिए समान शब्दार्थ वाले विकल्पों के समान सेट की अनुमति देता है file और इस प्रकार लाइब्रेरियन को आमंत्रित करने का अनुशंसित तरीका है। यदि विरासत परियोजनाओं के लिए आवश्यक है, तो पिछले लाइब्रेरियन को पुराने संकलक संस्करणों में स्वीकार किए गए पुराने-शैली के विकल्पों का उपयोग करके सीधे बुलाया जा सकता है।

प्रवासन मुद्दे

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

4.1। संस्करण 2.39 (कार्यात्मक सुरक्षा रिलीज़)
कोई नहीं।
4.2. संस्करण 2.36 कोई नहीं।
4.3. संस्करण 2.35
स्ट्रिंग-टू बेस (XC8-2420) की हैंडलिंग अन्य XC कंपाइलर्स के साथ निरंतरता सुनिश्चित करने के लिए, XC8 स्ट्रिंग-टू फ़ंक्शन, जैसे स्ट्रटोल () आदि, अब इनपुट स्ट्रिंग को बदलने का प्रयास नहीं करेंगे यदि निर्दिष्ट आधार 36 से बड़ा है और इसके बजाय इरनो को EINVAL पर सेट करेगा। सी मानक के व्यवहार को निर्दिष्ट नहीं करता है जब यह आधार मान पार हो जाता है तो कार्य करता है।
अनुचित गति अनुकूलन स्तर 3 अनुकूलन (-03) का चयन करते समय प्रक्रियात्मक अमूर्त अनुकूलन सक्षम किए जा रहे थे। ये अनुकूलन कोड गति की कीमत पर कोड आकार को कम करते हैं, इसलिए प्रदर्शन नहीं किया जाना चाहिए था। इस रिलीज़ के साथ निर्मित होने पर इस अनुकूलन स्तर का उपयोग करने वाली परियोजनाओं को कोड आकार और निष्पादन गति में अंतर दिखाई दे सकता है।
पुस्तकालय की कार्यक्षमता कई मानक सी पुस्तकालय कार्यों के लिए कोड अब माइक्रोचिप की यूनिफाइड स्टैंडर्ड लाइब्रेरी से आते हैं, जो कि पूर्व avr-libc लाइब्रेरी द्वारा प्रदान की गई तुलना में कुछ परिस्थितियों में भिन्न व्यवहार प्रदर्शित कर सकते हैं। पूर्व के लिएampले, फ्लोट-प्रारूप विनिर्देशकों के लिए स्वरूपित I1 समर्थन चालू करने के लिए 1printf flt लाइब्रेरी (-0printf_flt विकल्प) में लिंक करना अब आवश्यक नहीं है। माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी की स्मार्ट 10 विशेषताएं इस विकल्प को बेमानी बनाती हैं। इसके अतिरिक्त, स्ट्रिंग और मेमोरी फ़ंक्शंस (जैसे strcpy_P ( ) आदि..) के लिए _P प्रत्यय रूटीन का उपयोग जो फ़्लैश में कॉन्स्ट स्ट्रिंग्स पर संचालित होता है, अब आवश्यक नहीं है। कॉन्स्ट-डेटा-इन-प्रोग्राम-मेमोरी सुविधा सक्षम होने पर मानक सी रूटीन (उदाहरण के लिए strcpy 0) ऐसे डेटा के साथ सही ढंग से काम करेंगे।

4.4. संस्करण 2.32
कोई नहीं।
4.5. संस्करण 2.31
कोई नहीं।
4.6. संस्करण 2.30
कोई नहीं।
4.1। संस्करण 2.29 (कार्यात्मक सुरक्षा रिलीज़)
कोई नहीं।
4.2. संस्करण 2.20
परिवर्तित DFP लेआउट कंपाइलर अब DFPs (डिवाइस फ़ैमिली पैक) द्वारा उपयोग किए जाने वाले भिन्न लेआउट को मानता है। इसका अर्थ यह होगा कि एक पुराना DFP इस रिलीज़ के साथ काम नहीं कर सकता है, और पुराने संकलक नवीनतम DFPs का उपयोग करने में सक्षम नहीं होंगे।

4.3। संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज़)
कोई नहीं।
4.4। संस्करण 2.10 कोई नहीं
4.5. संस्करण 2.05
प्रोग्राम मेमोरी में कॉन्स्ट ऑब्जेक्ट्स ध्यान दें कि डिफ़ॉल्ट रूप से, कॉन्स्ट-योग्य ऑब्जेक्ट्स को प्रोग्राम मेमोरी में रखा जाएगा और एक्सेस किया जाएगा (जैसा कि वर्णित है)। यह आपके प्रोजेक्ट के आकार और निष्पादन की गति को प्रभावित करेगा, लेकिन RAM उपयोग को कम करना चाहिए। यदि आवश्यक हो, तो -mnocons t-data-in-pr ogmem विकल्प का उपयोग करके इस सुविधा को अक्षम किया जा सकता है।

4.6. संस्करण 2.00
कॉन्फ़िगरेशन फ़्यूज़ डिवाइस कॉन्फ़िगरेशन फ़्यूज़ को अब फ़्यूज़ स्थिति निर्दिष्ट करने के लिए सेटिंग-वैल्यू जोड़े के बाद कॉन्फ़िगरेशन प्रागमा का उपयोग करके प्रोग्राम किया जा सकता है, उदाहरण के लिए #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
निरपेक्ष वस्तुएं और कार्य वस्तुओं और कार्यों को अब CCI _ का उपयोग करके मेमोरी में विशिष्ट पते पर रखा जा सकता है।at (पता) निर्दिष्टकर्ता, पूर्व के लिएampपर:
ifinclude
इंट फोबार एट (0)0300100);
char at(0x250) getID(intoffset) (इस विनिर्देशक के लिए तर्क एक स्थिर होना चाहिए जो उस पते का प्रतिनिधित्व करता है जिस पर पहला बाइट या निर्देश रखा जाएगा। रैम पते ऑक्स 800000 के ऑफ़सेट का उपयोग करके इंगित किए जाते हैं। सीसीआई को सक्षम करें इस सुविधा का उपयोग करें।
नया इंटरप्ट फ़ंक्शन सिंटैक्स कंपाइलर अब सीसीआई _व्यवधान को स्वीकार करता है (संख्या) विनिर्देशक यह इंगित करने के लिए कि सी फ़ंक्शन इंटरप्ट हैंडलर हैं। निर्दिष्टकर्ता एक रुकावट संख्या लेता है, उदाहरण के लिएampपर:

निश्चित मुद्दे

निम्नलिखित सुधार हैं जो संकलक में किए गए हैं। ये जनरेट किए गए कोड में बग को ठीक कर सकते हैं या कंपाइलर के संचालन को बदल सकते हैं जो उपयोगकर्ता के गाइड द्वारा अभिप्रेत या निर्दिष्ट किया गया था। उपशीर्षकों में संस्करण संख्या पहले संकलक संस्करण को इंगित करती है जिसमें आने वाली समस्याओं के लिए फ़िक्सेस शामिल हैं। शीर्षक में ब्रैकेटेड लेबल ट्रैकिंग डेटाबेस में उस मुद्दे की पहचान है। यदि आपको समर्थन से संपर्क करने की आवश्यकता है तो ये उपयोगी हो सकते हैं।
ध्यान दें कि कुछ डिवाइस-विशिष्ट समस्याओं को डिवाइस फ़ैमिली पैक (DR)) डिवाइस से जुड़ा हुआ है। डीएफपी में किए गए परिवर्तनों की जानकारी और नवीनतम पैक डाउनलोड करने के लिए एमपीएलएबी पैक प्रबंधक देखें।

5.1। संस्करण 2.39 (कार्यात्मक सुरक्षा रिलीज़)
कोई नहीं।
5.2. संस्करण 2.36
देरी करते समय त्रुटि (XCS2774) डिफॉल्ट फ्री मोड ऑप्टिमाइज़ेशन में मामूली बदलावों ने ऑपरेंड एक्सप्रेशन को देरी से निर्मित फ़ंक्शंस में लगातार मोड़ने से रोक दिया, जिसके परिणामस्वरूप उन्हें गैर-स्थिरांक के रूप में माना गया और त्रुटि को ट्रिगर किया गया। निर्मित in_avr_delay_cycles संकलन समय पूर्णांक स्थिरांक की अपेक्षा करता है।

5.3. संस्करण 2.35
मिला हुआ आवंटन _at (XCS2653) समान नाम और _at () का उपयोग करके एक खंड में कई वस्तुओं के लगातार आवंटन ने सही ढंग से काम नहीं किया। पूर्व के लिएampपर:
const char arrl[ ] विशेषता (अनुभाग (".mysec") at (0x500) = (OxAB, OxCD);
const char arr2[ ] विशेषता (सेक्शनर.mysec”)= (OxEF, OxFE);
आगमन के तुरंत बाद arr2 रखा जाना चाहिए था।
अनुभाग प्रारंभ पते निर्दिष्ट करना (XCS2650) द -wl, -सेक्शन-स्टार्ट विकल्प नामांकित प्रारंभ पते पर अनुभागों को चुपचाप विफल कर रहा था। यह समस्या किसी भी कस्टम-नामित अनुभागों के लिए ठीक कर दी गई है; हालाँकि, यह किसी भी मानक अनुभागों के लिए काम नहीं करेगा, जैसे . पाठ या। bss, जिसे a का उपयोग करके रखा जाना चाहिए -वल, -टी विकल्प।
आराम करने पर लिंकर क्रैश हो जाता है (XCS2647) कब -mrelax ऑप्टिमाइज़ेशन को सक्षम किया गया था और वे कोड या डेटा सेक्शन थे जो उपलब्ध मेमोरी में फिट नहीं थे, लिंकर क्रैश हो गया। अब ऐसे में इसकी जगह एरर मैसेज जारी किए जाते हैं।
नहीं - नहींगिरनावापस (एक्ससीएस2646) द -नोफॉलबैक विकल्प को सही ढंग से लागू नहीं किया गया था, न ही प्रलेखित किया गया था। यह अब यह सुनिश्चित करने के लिए चुना जा सकता है कि यदि संकलक बिना लाइसेंस के है, तो संकलक कम अनुकूलन सेटिंग पर वापस नहीं आएगा, और इसके बजाय एक त्रुटि जारी करेगा।
अनुचित गति अनुकूलन (XCS2637) स्तर 3 अनुकूलन (-03) का चयन करते समय प्रक्रियात्मक अमूर्त अनुकूलन सक्षम किए जा रहे थे। ये अनुकूलन कोड गति की कीमत पर कोड आकार को कम करते हैं, इसलिए प्रदर्शन नहीं किया जाना चाहिए था।
खराब EEPROM एक्सेस (XCS2629) -mconst-data-in-progmem विकल्प सक्षम होने पर eeprom_read_block रूटीन सही तरीके से Xmega डिवाइस पर काम नहीं करता था (जो कि डिफ़ॉल्ट स्थिति है), जिसके परिणामस्वरूप EEPROM मेमोरी सही तरीके से नहीं पढ़ी जा रही है।
अमान्य मेमोरी आवंटन (X03-2593, XC8-2651) कब -Ttext या -Tdata लिंकर विकल्प (उदाहरण के लिएample एक -wl ड्राइवर विकल्प का उपयोग करके पारित किया गया है) निर्दिष्ट किया गया है, संबंधित पाठ/डेटा क्षेत्र मूल अद्यतन किया गया था; हालाँकि, अंतिम पता तदनुसार समायोजित नहीं किया गया था, जिसके कारण क्षेत्र लक्ष्य डिवाइस की मेमोरी रेंज से अधिक हो सकता था।
ओवर-एट्रिब्यूटेड फ़ंक्शन के साथ क्रैश (XC8-2580) यदि किसी फ़ंक्शन को एक से अधिक इंटरप्ट, सिग्नल या एनएमआई विशेषताओं का उपयोग करके घोषित किया गया था, तो कंपाइलर क्रैश हो गया, उदाहरण के लिए, _attribute_ ((सिग्नल, इंटरप्ट))।
अमान्य ATtiny इंटरप्ट कोड (XC8-2465) जब ATtiny उपकरणों के लिए निर्माण और ऑप्टिमाइज़ेशन अक्षम (-00) थे, तो इंटरप्ट फ़ंक्शंस ने रेंज असेंबलर संदेशों के ऑपरेंड को ट्रिगर किया हो सकता है।
विकल्प (XC8-2452) के माध्यम से पारित नहीं किया जा रहा है जब उपयोग कर रहे हों -wl एकाधिक, अल्पविराम से अलग किए गए लिंकर विकल्पों के साथ विकल्प, लिंकर को सभी लिंकर विकल्प पास नहीं किए जा रहे थे।
अप्रत्यक्ष रूप से प्रोग्राम मेमोरी पढ़ने में त्रुटि (X03-2450) कुछ उदाहरणों में, कंपाइलर ने उत्पादन किया एक पॉइंटर से प्रोग्राम मेमोरी में दो बाइट मान पढ़ते समय एक आंतरिक त्रुटि (पहचानने योग्य insn)।

5.4. संस्करण 2.32
पुस्तकालय की दूसरी पहुँच विफल (X03-2381) xc8-ar.exe लायब्रेरी संग्रहकर्ता के Windows संस्करण को किसी मौजूदा लायब्रेरी संग्रह तक पहुँचने के लिए दूसरी बार आमंत्रित करना त्रुटि संदेश का नाम बदलने में असमर्थ होने के साथ विफल हो सकता है।

5.5. संस्करण 2.31
अस्पष्ट संकलक विफलताएँ (XC8-2367) जब चल रहा हो विंडोज़ प्लेटफ़ॉर्म जिनमें सिस्टम अस्थायी निर्देशिका एक पथ पर सेट थी जिसमें एक बिंदु शामिल था '।' चरित्र, संकलक निष्पादित करने में विफल हो सकता है।

5.6. संस्करण 2.30
वैश्विक लेबल (XC8-2299) हाथ से लिखे गए असेंबली कोड को रेखांकित करने के बाद गलत स्थान पर रखा गया है जो वैश्विक स्थान रखता है असेंबली सीक्वेंस के भीतर के लेबल जो प्रक्रियात्मक अमूर्तता द्वारा फैक्ट किए गए हैं, उन्हें सही ढंग से रिप्लेस नहीं किया जा सकता है।
आराम से क्रैश (XC8-2287) का उपयोग करना -एमरिलैक्स विकल्प लिंकर के दुर्घटनाग्रस्त होने का कारण हो सकता है टेल जंप रिलैक्सेशन ऑप्टिमाइज़ेशन ने रिट निर्देश को हटाने का प्रयास किया जो a के अंत में नहीं थे अनुभाग।
मान के रूप में लेबल अनुकूलित करते समय क्रैश (XC8-2282) "लेबल के रूप में मान" GNU C का उपयोग करके कोड भाषा एक्सटेंशन के कारण प्रक्रियात्मक अमूर्त अनुकूलन क्रैश हो सकता है, एक उल्लिखित VMA रेंज फिक्सअप त्रुटि के साथ।
इतना स्थिर नहीं (XC8-2271) के लिए प्रोटोटाइप स्ट्रस्ट्र () और अन्य कार्यों से -mconst-data-inprogmem सुविधा के अक्षम होने पर अब लौटाए गए स्ट्रिंग पॉइंटर्स पर गैर-मानक कॉन्स क्वालीफायर निर्दिष्ट नहीं करता है। ध्यान दें कि avrxmega3 और avrtiny उपकरणों के साथ, यह सुविधा स्थायी रूप से सक्षम है।
लॉस्ट इनिशियलाइज़र (XC8-2269) जब एक अनुवाद में एक से अधिक चर होते हैं यूनिट को एक सेक्शन में रखा गया था (का उपयोग करके अनुभाग or गुण ( (खंड) )), और इस तरह का पहला वेरिएबल जीरो इनिशियलाइज़्ड था या उसके पास एक इनिशियलाइज़र नहीं था, उसी ट्रांसलेशन यूनिट में अन्य वेरिएबल्स के लिए इनिशियलाइज़र जो एक ही सेक्शन में रखे गए थे, खो गए थे।

5.1। संस्करण 2.2 9 (कार्यात्मक सुरक्षा रिलीज) कोई नहीं। 
5.2. संस्करण 2.20
लंबे कमांड के साथ त्रुटि (XC8-1983) एवीआर लक्ष्य का उपयोग करते समय, कंपाइलर एक लिल्ट नॉट एरर के साथ बंद हो सकता है, यदि कमांड लाइन बहुत बड़ी थी और इसमें विशेष वर्ण जैसे उद्धरण, बैकस्लैश आदि शामिल थे।
असाइन नहीं किया गया रोडाटा खंड (XC8-1920) एवीआरएक्समेगा3 और एवर्टिनी आर्किटेक्चर के लिए निर्माण करते समय एवीआर लिंकर कस्टम रॉडाटा अनुभागों के लिए मेमोरी आवंटित करने में विफल रहा, संभावित रूप से मेमोरी ओवरलैप त्रुटियां पैदा कर रहा था

5.3। संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज़)
कोई नहीं।
5.4. संस्करण 2.10
रिलोकेशन फेलियर (XC8-1891) सबसे उपयुक्त एलोकेटर लिंकर रिलैक्सेशन के बाद सेक्शन के बीच में मेमोरी 'होल' छोड़ रहा था। खंडित स्मृति के अलावा, इसने पीसी-रिलेटिव जंप या कॉल के सीमा से बाहर होने से संबंधित लिंकर स्थानांतरण विफलताओं की संभावना को बढ़ा दिया।
रिलैक्सेशन द्वारा परिवर्तित नहीं किए गए निर्देश (XC8-1889) जंप या कॉल निर्देशों के लिए लिंकर रिलैक्सेशन नहीं हुआ, जिनके लक्ष्यों को रिलैक्स किए जाने पर पहुंचा जा सकता है।
गुम कार्यक्षमता (XC8E-3) से कई परिभाषाएँ , जैसे कि क्लॉक_डिव_टी और क्लॉक_प्रेस्क एले_एस एट (), एटीमेगा324पीबी, एटीमेगा328पीबी, एटीटिनी441 और एटीटिनी841 सहित उपकरणों के लिए परिभाषित नहीं किए गए थे।
मिसिंग मैक्रोज़ प्रीप्रोसेसर मैक्रोज़ _XC 8_MODE_, XC 8 VERS ION, XC, और xc8 को कंपाइलर द्वारा स्वचालित रूप से परिभाषित नहीं किया गया था। ये अब उपलब्ध हैं।

5.5. संस्करण 2.05
आंतरिक संकलक त्रुटि (XC8-1822) विंडोज़ के तहत निर्माण करते समय, कोड का अनुकूलन करते समय एक आंतरिक संकलक त्रुटि उत्पन्न हो सकती है।
RAM अतिप्रवाह का पता नहीं चला (XC8-1800, XC8-1796) कुछ स्थितियों में संकलक द्वारा उपलब्ध RAM से अधिक प्रोग्राम का पता नहीं लगाया गया, जिसके परिणामस्वरूप रनटाइम कोड विफल हो गया।
छोड़ी गई फ्लैश मेमोरी (XC8-1792) avrxmega3 और avrtiny उपकरणों के लिए, फ्लैश मेमोरी के कुछ हिस्सों को MPLAB X IDE द्वारा प्रोग्राम किए बिना छोड़ दिया गया हो सकता है।
मुख्य (XC8-1788) को निष्पादित करने में विफलता कुछ स्थितियों में जहां कार्यक्रम में कोई वैश्विक चर परिभाषित नहीं था, रनटाइम स्टार्टअप कोड बाहर नहीं निकला और मुख्य () फ़ंक्शन कभी नहीं पहुंचा।
गलत स्मृति जानकारी (XC8-1787) avrxmega3 और avrtiny उपकरणों के लिए, avr- आकार कार्यक्रम रिपोर्ट कर रहा था कि मैड-ओनली डेटा प्रोग्राम मेमोरी के बजाय RAM का उपभोग कर रहा था।
गलत प्रोग्राम मेमोरी रीड (XC8-1783) डेटा एड्रेस स्पेस में मैप की गई प्रोग्राम मेमोरी वाले उपकरणों के लिए संकलित प्रोजेक्ट और जो PROGMEM मैक्रो/एट्रिब्यूट का उपयोग करके ऑब्जेक्ट को परिभाषित करते हैं, हो सकता है कि इन ऑब्जेक्ट्स को गलत पते से पढ़ा हो।
विशेषताओं के साथ आंतरिक त्रुटि (XC8-1773) एक आंतरिक त्रुटि उत्पन्न हुई यदि आपने पॉइंटर ऑब्जेक्ट को _at 0 या विशेषता () टोकन के साथ पॉइंटर नाम और डीरेफरेंस्ड प्रकार के बीच परिभाषित किया, उदाहरण के लिएampले, चार * _at (0x800150) सीपी; इस तरह के कोड का सामना करने पर अब एक चेतावनी जारी की जाती है।

मुख्य निष्पादित करने में विफलता (XC8-1780, XC8-1767, XC8-1754) EEPROM वेरिएबल्स का उपयोग करना या कॉन्फ़िगरेशन प्रागमा का उपयोग करके फ़्यूज़ को परिभाषित करना मुख्य 0 तक पहुँचने से पहले रनटाइम स्टार्टअप कोड में गलत डेटा इनिशियलाइज़ेशन और/या लॉक प्रोग्राम निष्पादन का कारण हो सकता है।

छोटे उपकरणों के साथ फ्यूज त्रुटि (XC8-1778, XC8-1742) attiny4/5/9/10120140 उपकरणों में उनके शीर्षलेख में निर्दिष्ट गलत फ़्यूज़ लंबाई थी files जो फ़्यूज़ को परिभाषित करने वाले कोड को बनाने का प्रयास करते समय लिंकर त्रुटियों का कारण बनता है।

विभाजन दोष (XC8-1777) आंतरायिक विभाजन दोष को ठीक कर दिया गया है।

असेंबलर क्रैश (XC8-1761) avr -as असेंबलर क्रैश हो सकता है जब कंपाइलर को Ubuntu 18 के तहत चलाया गया था।

ऑब्जेक्ट साफ़ नहीं किए गए (XC8-1752) रनटाइम स्टार्टअप कोड द्वारा अप्रारंभीकृत स्थिर संग्रहण अवधि ऑब्जेक्ट को साफ़ नहीं किया गया हो सकता है।

परस्पर विरोधी डिवाइस विनिर्देश पर ध्यान नहीं दिया गया (XC8-1749) The कंपाइलर एक त्रुटि उत्पन्न नहीं कर रहा था जब एकाधिक डिवाइस विनिर्देश विकल्पों का उपयोग किया गया था और विभिन्न उपकरणों का संकेत दिया गया था।

ढेर द्वारा स्मृति भ्रष्टाचार (XC8-1748) The _heap_start प्रतीक को गलत तरीके से सेट किया जा रहा था, जिसके परिणामस्वरूप ढेर द्वारा सामान्य चरों के दूषित होने की संभावना थी।

लिंकर स्थानांतरण त्रुटि (XC8-1739) एक लिंकर स्थानांतरण त्रुटि उत्सर्जित हो सकती है जब कोड में 4k बाइट दूर लक्ष्य के साथ rjmn या rcall होता है।

5.6। संस्करण 2.00 कोई नहीं।

ज्ञात मुद्दे

संकलक के संचालन में निम्नलिखित सीमाएँ हैं। ये सामान्य कोडिंग प्रतिबंध, या उपयोगकर्ता के मैनुअल में निहित जानकारी से विचलन हो सकते हैं। ज्वार में ब्रैकेटेड लेबल ट्रैकिंग डेटाबेस में उस मुद्दे की पहचान है। यदि आपको समर्थन से संपर्क करने की आवश्यकता है तो यह लाभकारी हो सकता है। जिन मदों में लेबल नहीं है, वे सीमाएँ हैं जो मोडी ऑपरेंडी का वर्णन करती हैं और जिनके स्थायी रूप से प्रभावी रहने की संभावना है।
6.1। एमपीएलएबी एक्स आईडीई एकीकरण
एमपीएलएबी आईडीई एकीकरण यदि कम्पाइलर का उपयोग MPLAB IDE से किया जाना है, तो आपको कम्पाइलर स्थापित करने से पहले MPLAB IDE स्थापित करना होगा।
6.2. कोड जनरेशन
ग़लत आरंभीकरण (XC8-2679) कुछ वैश्विक/स्थैतिक बाइट-आकार की वस्तुओं के लिए प्रारंभिक मान डेटा मेमोरी में कहाँ रखा जाता है और जहाँ रनटाइम पर चर का उपयोग किया जाएगा, के बीच एक विसंगति है।
strtod गलत तरीके से endptr सेट करता है (XC8-2652) ऐसे मामलों में जहां strtod () द्वारा रूपांतरण के लिए एक विषय स्ट्रिंग में एक फ्लोटिंग-पॉइंट नंबर होता है जो एक्सपोनेंशियल फॉर्मेट में दिखाई देता है और ई कैरेक्टर के बाद एक अनपेक्षित कैरेक्टर होता है, तो एंडप्टर एड्रेस, यदि प्रदान किया जाता है, तो बाद के कैरेक्टर को इंगित करेगा। ई और ई ही नहीं। पूर्व के लिएampले: स्ट्रॉड ("100exy", एंडप्टर);

x वर्ण की ओर इशारा करते हुए endptr का परिणाम होगा।

खराब अप्रत्यक्ष फ़ंक्शन कॉल (X03-2628) कुछ उदाहरणों में, संरचना के हिस्से के रूप में संग्रहीत फ़ंक्शन पॉइंटर के माध्यम से किए गए फ़ंक्शन कॉल विफल हो सकते हैं।

strtof हेक्साडेसिमल फ़्लोट्स (XC8-2626) के लिए शून्य लौटाता है लाइब्रेरी फ़ंक्शंस strtof () et al और scanf () et al, हमेशा एक हेक्साडेसिमल फ़्लोटिंग-पॉइंट नंबर को रूपांतरित करेगा जो एक एक्सपोनेंट को शून्य तक निर्दिष्ट नहीं करता है। पूर्व के लिएampले: strtof ("Oxl", और endptr); मान 0 लौटाएगा, 1 नहीं।
गलत स्टैक सलाहकार संदेश (XC8-2542, XC8-2541) कुछ मामलों में, रिकर्सन या अनिश्चित स्टैक के उपयोग के बारे में स्टैक सलाहकार चेतावनी (संभवतः एलोका () के उपयोग के माध्यम से) उत्सर्जित नहीं होती है।
डुप्लीकेट इंटरप्ट कोड के साथ विफलता (XC8-2421) जहाँ एक से अधिक इंटरप्ट फ़ंक्शन में एक ही बॉडी होती है, कंपाइलर के पास एक इंटरप्ट फ़ंक्शन के लिए आउटपुट हो सकता है जो दूसरे को कॉल करता है। इसके परिणामस्वरूप सभी कॉल-क्लोबर्ड रजिस्टरों को अनावश्यक रूप से सहेजा जा रहा है, और वर्तमान इंटरप्ट हैंडलर के उपसंहार के चलने से पहले ही व्यवधान सक्षम हो जाएगा, जिससे कोड विफलता हो सकती है।
कॉन्स्ट ऑब्जेक्ट प्रोग्राम मेमोरी में नहीं हैं (XC8-2408) avrxmega3 और avrtiny प्रोजेक्ट्स के लिए प्रारंभिक कॉन्स्ट ऑब्जेक्ट्स को डेटा मेमोरी में रखा जाता है, भले ही एक चेतावनी बताती है कि उन्हें प्रोग्राम मेमोरी में रखा गया है। यह उन उपकरणों को प्रभावित नहीं करेगा जिनके पास डेटा मेमोरी स्पेस में मैप की गई प्रोग्राम मेमोरी नहीं है, न ही यह आरंभिक किसी ऑब्जेक्ट को प्रभावित करेगा।
अमान्य DFP पथ के साथ खराब आउटपुट (XCS-2376) यदि कंपाइलर को अमान्य DFP पथ और 'युक्ति' के साथ लागू किया जाता है file चयनित डिवाइस के लिए मौजूद है, कंपाइलर लापता डिवाइस परिवार पैक की रिपोर्ट नहीं कर रहा है और इसके बजाय 'युक्ति' का चयन कर रहा है file, जो तब अमान्य आउटपुट का कारण बन सकता है। 'कल्पना' fileएस वितरित डीएफपी के साथ अद्यतित नहीं हो सकता है और केवल आंतरिक कंपाइलर परीक्षण के साथ उपयोग के लिए अभिप्रेत था।
मेमोरी ओवरलैप का पता नहीं चला (XC8-1966) कंपाइलर एक पते पर पूर्ण किए गए ऑब्जेक्ट्स की मेमोरी ओवरलैप का पता नहीं लगा रहा है (_at 0 के माध्यम से) और _ का उपयोग कर अन्य ऑब्जेक्ट्ससंप्रदायआयन () विनिर्देशक और जो एक ही पते से जुड़े हुए हैं।
पुस्तकालय कार्यों और _memx (XC8-1763) के साथ विफलता _memx एड्रेस स्पेस में एक तर्क के साथ कॉल किए गए libgcc फ्लोट फ़ंक्शन विफल हो सकते हैं। ध्यान दें कि लाइब्रेरी रूटीन कुछ सी ऑपरेटरों से बुलाए जाते हैं, इसलिए, पूर्व के लिएample, निम्न कोड प्रभावित होता है: रिटर्न regFloatVar > memxFloatVar;
सीमित libgcc कार्यान्वयन (AVRTC-731) के लिए ATTiny4/5/9/10/20/40 उत्पाद, libgcc में मानक C/गणित पुस्तकालय कार्यान्वयन बहुत सीमित है या मौजूद नहीं है।
प्रोग्राम मेमोरी सीमाएँ (AVRTC-732) 128 केबी से अधिक प्रोग्राम मेमोरी छवियों को टूलचैन द्वारा समर्थित किया जाता है; हालांकि, -mrelax विकल्प का उपयोग किए जाने पर आवश्यक फ़ंक्शन स्टब्स उत्पन्न करने के बजाय बिना किसी छूट के और सहायक त्रुटि संदेश के बिना लिंकर गर्भपात के ज्ञात उदाहरण हैं।
नाम स्थान की सीमाएँ (AVRTC-733) उपयोगकर्ता के गाइड सेक्शन स्पेशल टाइप क्वालिफायर में उल्लिखित सीमाओं के अधीन, नामित पता स्थान टूलचेन द्वारा समर्थित हैं।
समय क्षेत्र द लाइब्रेरी फ़ंक्शंस GMT मानते हैं और स्थानीय समय क्षेत्रों का समर्थन नहीं करते हैं, इस प्रकार loca It ime 0 gmtime ( ) के समान समय लौटाएगा, पूर्व के लिएampले.

दस्तावेज़ / संसाधन

AVR MCU के लिए MICROCHIP MPLAB XC8 C कंपाइलर संस्करण 2.39 रिलीज़ नोट्स [पीडीएफ] उपयोगकर्ता गाइड
MPLAB XC8 C कंपाइलर संस्करण 2.39 AVR MCU के लिए रिलीज़ नोट्स, MPLAB XC8 C, कंपाइलर संस्करण 2.39 AVR MCU के लिए रिलीज़ नोट्स, AVR MCU के लिए रिलीज़ नोट्स
AVR MCU के लिए MICROCHIP MPLAB XC8 C कंपाइलर संस्करण 2.39 रिलीज़ नोट्स [पीडीएफ] उपयोगकर्ता गाइड
MPLAB XC8 C कंपाइलर संस्करण 2.39 AVR MCU के लिए रिलीज़ नोट्स, MPLAB XC8 C, कंपाइलर संस्करण 2.39 AVR MCU के लिए रिलीज़ नोट्स, AVR MCU के लिए नोट्स
माइक्रोचिप MPLAB XC8 C कंपाइलर [पीडीएफ] उपयोगकर्ता गाइड
MPLAB XC8 C कंपाइलर, MPLAB XC8 C, कंपाइलर

संदर्भ

एक टिप्पणी छोड़ें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *