माइक्रोचिप-लोगो

AVR MCU के लिए माइक्रोचिप XC8 C कंपाइलर संस्करण 2.45 रिलीज़ नोट्स

MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-PRO

उत्पाद की जानकारी

MPLAB XC8 C कंपाइलर एक सॉफ्टवेयर टूल है जिसका उपयोग माइक्रोचिप AVR डिवाइस को लक्षित करने के लिए किया जाता है। इसे C कोड संकलित करने और निष्पादन योग्य बनाने के लिए डिज़ाइन किया गया है fileइन डिवाइस के लिए। इस उपयोगकर्ता मैनुअल में जिस कंपाइलर संस्करण का उल्लेख किया जा रहा है वह 2.45 है, जिसकी आधिकारिक निर्माण तिथि 18 अगस्त, 2023 है। पिछला संस्करण 2.41 था, जिसे 8 फरवरी, 2023 को बनाया गया था। कंपाइलर एक फंक्शनल सेफ्टी मैनुअल के साथ आता है, जो फंक्शनल सेफ्टी एप्लिकेशन के साथ MPLAB XC कंपाइलर्स का उपयोग करते समय अतिरिक्त जानकारी और दिशानिर्देश प्रदान करता है। जब आप फंक्शनल सेफ्टी लाइसेंस खरीदते हैं तो यह मैनुअल डॉक्यूमेंटेशन पैकेज में शामिल होता है। MPLAB XC8 C कंपाइलर रिलीज़ के समय सभी उपलब्ध 8-बिट AVR MCU डिवाइस को सपोर्ट करता है। आप avr_chipinfo.html का संदर्भ ले सकते हैं file सभी समर्थित डिवाइस और उनकी कॉन्फ़िगरेशन बिट सेटिंग्स की सूची के लिए कंपाइलर की डॉक निर्देशिका में जाएँ। MPLAB XC8 कंपाइलर के विभिन्न संस्करण उपलब्ध हैं। लाइसेंस प्राप्त (PRO) संस्करण मुफ़्त संस्करण की तुलना में अनुकूलन का एक उच्च स्तर प्रदान करता है। कंपाइलर को लाइसेंस प्राप्त उत्पाद के रूप में सक्रिय करने के लिए, आपको एक सक्रियण कुंजी खरीदनी होगी। हालाँकि, बिना लाइसेंस वाले संस्करण का उपयोग बिना लाइसेंस के अनिश्चित काल तक किया जा सकता है। कार्यात्मक सुरक्षा अनुप्रयोगों के लिए, एक MPLAB XC8 कार्यात्मक सुरक्षा कंपाइलर उपलब्ध है। इसे सक्रियण के लिए माइक्रोचिप से खरीदे गए कार्यात्मक सुरक्षा लाइसेंस की आवश्यकता होती है। एक बार सक्रिय होने के बाद, सभी अनुकूलन स्तर और कंपाइलर सुविधाओं का उपयोग किया जा सकता है। MPLAB XC कार्यात्मक सुरक्षा कंपाइलर नेटवर्क सर्वर लाइसेंस का भी समर्थन करता है। स्थापना, सक्रियण, लाइसेंस प्रकार और माइग्रेशन समस्याओं के बारे में विस्तृत जानकारी MPLAB XC C कंपाइलर स्थापित करना और लाइसेंस देना (DS50002059) दस्तावेज़ में पाई जा सकती है।

उत्पाद उपयोग निर्देश

  1. MPLAB XC8 C कम्पाइलर सॉफ्टवेयर चलाने से पहले, माइक्रोचिप AVR उपकरणों को लक्षित करने के लिए महत्वपूर्ण जानकारी और निर्देशों के लिए उपयोगकर्ता मैनुअल पढ़ें।
  2. यदि आप 8-बिट PIC डिवाइसों के लिए कंपाइलर का उपयोग कर रहे हैं, तो PIC दस्तावेज़ के लिए MPLAB XC8 C कंपाइलर रिलीज़ नोट्स देखें।
  3. सुनिश्चित करें कि आपका ऑपरेटिंग सिस्टम कंपाइलर चलाने के लिए सिस्टम आवश्यकताओं को पूरा करता है। macOS के लिए बाइनरी को कोड-हस्ताक्षरित और नोटरीकृत किया गया है। MPLAB XC नेटवर्क लाइसेंस सर्वर Microsoft Windows 10 और ऊपर, Ubuntu 18.04 और ऊपर, और macOS 10.15 और ऊपर के लिए उपलब्ध है। ध्यान दें कि MPLAB XC नेटवर्क लाइसेंस सर्वर इन ऑपरेटिंग सिस्टम पर परीक्षण नहीं किया गया है।
  4. MPLAB XC नेटवर्क लाइसेंस सर्वर को नेटवर्क लाइसेंस (SW006021-VM) के लिए वर्चुअल मशीन लाइसेंस का उपयोग करके समर्थित OS की वर्चुअल मशीनों पर चलाया जा सकता है। MPLAB XC नेटवर्क सर्वर के सभी 32-बिट संस्करण संस्करण 3.00 से शुरू होने वाले हैं।
  5. MPLAB XC8 C कंपाइलर को लाइसेंस प्राप्त (PRO) उत्पाद के रूप में सक्रिय करने के लिए, एक सक्रियण कुंजी खरीदें। यह मुफ़्त संस्करण की तुलना में अनुकूलन का उच्च स्तर प्रदान करेगा। हालाँकि, बिना लाइसेंस वाले कंपाइलर को बिना लाइसेंस के अनिश्चित काल तक संचालित किया जा सकता है।
  6. यदि आप फंक्शनल सेफ्टी एप्लीकेशन के लिए MPLAB XC8 फंक्शनल सेफ्टी कंपाइलर का उपयोग कर रहे हैं, तो इसे माइक्रोचिप से खरीदे गए फंक्शनल सेफ्टी लाइसेंस के साथ सक्रिय किया जाना चाहिए। इस लाइसेंस के बिना कंपाइलर काम नहीं करेगा। सक्रिय होने के बाद, आप कोई भी ऑप्टिमाइज़ेशन स्तर चुन सकते हैं और सभी कंपाइलर सुविधाओं का उपयोग कर सकते हैं। MPLAB XC फंक्शनल सेफ्टी कंपाइलर के इस रिलीज़ द्वारा नेटवर्क सर्वर लाइसेंस का समर्थन किया जाता है।
  7. MPLAB XC8 C कम्पाइलर की स्थापना, सक्रियण और लाइसेंसिंग पर विस्तृत निर्देशों के लिए, MPLAB XC C कम्पाइलर की स्थापना और लाइसेंसिंग (DS50002059) दस्तावेज़ देखें।
  8. यदि आप मूल्यांकन लाइसेंस के तहत कंपाइलर चला रहे हैं, तो आपको संकलन के दौरान एक चेतावनी प्राप्त होगी जब आप अपनी मूल्यांकन अवधि के अंत के 14 दिनों के भीतर होंगे। यदि आप अपनी HPA सदस्यता के अंत के 14 दिनों के भीतर हैं तो वही चेतावनी जारी की जाती है।

ऊपरview

परिचय
माइक्रोचिप MPLAB® XC8 C कंपाइलर के इस संस्करण में कई नई सुविधाएं, बग फिक्स और नए उपकरणों के लिए समर्थन शामिल है।

निर्माण तिथि
इस कंपाइलर संस्करण की आधिकारिक निर्माण तिथि 18 अगस्त 2023 है।

पुराना वर्जन
पिछला MPLAB XC8 C कंपाइलर संस्करण 2.41 था, जिसे 8 फरवरी, 2023 को बनाया गया था।

कार्यात्मक सुरक्षा मैनुअल
जब आप कार्यात्मक सुरक्षा लाइसेंस खरीदते हैं तो MPLAB XC कंपाइलर्स के लिए एक कार्यात्मक सुरक्षा मैनुअल प्रलेखन पैकेज में उपलब्ध होता है।

घटक लाइसेंस और संस्करण
AVR MCUs उपकरणों के लिए MPLAB XC8 C कंपाइलर GNU जनरल पब्लिक लाइसेंस (GPL) के तहत लिखा और वितरित किया जाता है, जिसका अर्थ है कि इसका स्रोत कोड स्वतंत्र रूप से वितरित किया जाता है और जनता के लिए उपलब्ध है। GNU GPL के तहत उपकरणों के लिए स्रोत कोड माइक्रोचिप के से अलग से डाउनलोड किया जा सकता है webसाइट। आप इसमें जीएनयू जीपीएल पढ़ सकते हैं file नाम आपकी इंस्टॉल निर्देशिका की उपनिर्देशिका स्थित है। जीपीएल में अंतर्निहित सिद्धांतों की एक सामान्य चर्चा यहां पाई जा सकती है। हेडर के लिए समर्थन कोड प्रदान किया गया 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® 13.2 (Ventura) और Fedora 34 के प्रोफेशनल संस्करण। Windows के लिए बाइनरी को कोड-हस्ताक्षरित किया गया है। macOS के लिए बाइनरी को कोड-हस्ताक्षरित और नोटरीकृत किया गया है। MPLAB XC नेटवर्क लाइसेंस सर्वर विभिन्न 64-बिट ऑपरेटिंग सिस्टम के लिए उपलब्ध है, जिसमें Microsoft Windows 10 और इसके बाद के संस्करण; Ubuntu 18.04 और इसके बाद के संस्करण; या macOS 10.15 और इसके बाद के संस्करण शामिल हैं। सर्वर विभिन्न अन्य ऑपरेटिंग सिस्टम पर भी चल सकता है जिसमें Windows Server, Linux डिस्ट्रीब्यूशन, जैसे Oracle® Enterprise Linux® और Red Hat® Enterprise Linux और साथ ही समर्थित ऑपरेटिंग सिस्टम के पुराने संस्करण शामिल हैं MPLAB XC नेटवर्क लाइसेंस सर्वर को नेटवर्क लाइसेंस (SW006021-VM) के लिए वर्चुअल मशीन लाइसेंस का उपयोग करके समर्थित OS की वर्चुअल मशीनों पर चलाया जा सकता है। MPLAB XC नेटवर्क सर्वर के सभी 32-बिट संस्करण संस्करण 3.00 से शुरू होने वाले हैं।

उपकरणों का समर्थन किया
यह कंपाइलर रिलीज़ के समय सभी उपलब्ध 8-बिट AVR MCU डिवाइस को सपोर्ट करता है। सभी समर्थित डिवाइस की सूची के लिए avr_chipinfo.html (कंपाइलर की डॉक डायरेक्टरी में) देखें। ये फ़ाइलें प्रत्येक डिवाइस के लिए कॉन्फ़िगरेशन बिट सेटिंग्स भी सूचीबद्ध करती हैं।

संस्करण और लाइसेंस उन्नयन
MPLAB XC8 कंपाइलर को लाइसेंस प्राप्त (PRO) या बिना लाइसेंस वाले (फ्री) उत्पाद के रूप में सक्रिय किया जा सकता है। आपको अपने कंपाइलर को लाइसेंस देने के लिए एक सक्रियण कुंजी खरीदनी होगी। लाइसेंस, फ्री उत्पाद की तुलना में उच्च स्तर के अनुकूलन की अनुमति देता है। बिना लाइसेंस वाले कंपाइलर को बिना लाइसेंस के अनिश्चित काल तक संचालित किया जा सकता है। MPLAB XC8 फंक्शनल सेफ्टी कंपाइलर को माइक्रोचिप से खरीदे गए फंक्शनल सेफ्टी लाइसेंस के साथ सक्रिय किया जाना चाहिए। इस लाइसेंस के बिना कंपाइलर काम नहीं करेगा। सक्रिय होने के बाद, आप किसी भी अनुकूलन स्तर का चयन कर सकते हैं और सभी कंपाइलर सुविधाओं का उपयोग कर सकते हैं। MPLAB XC फंक्शनल सेफ्टी कंपाइलर का यह रिलीज़ नेटवर्क सर्वर लाइसेंस का समर्थन करता है। लाइसेंस प्रकारों और लाइसेंस के साथ कंपाइलर की स्थापना के बारे में जानकारी के लिए MPLAB XC C कंपाइलर (DS50002059) स्थापित करना और लाइसेंस देना दस्तावेज़ देखें।

स्थापना और सक्रियण
इस कंपाइलर के साथ शामिल नवीनतम लाइसेंस प्रबंधक के बारे में महत्वपूर्ण जानकारी के लिए माइग्रेशन समस्याएं और सीमाएं अनुभाग भी देखें। यदि MPLAB IDE का उपयोग कर रहे हैं, तो इस टूल को स्थापित करने से पहले नवीनतम MPLAB X IDE संस्करण 5.0 या बाद का संस्करण स्थापित करना सुनिश्चित करें। कंपाइलर स्थापित करने से पहले IDE से बाहर निकलें। .run (Linux) या .app (macOS) कंपाइलर इंस्टॉलर एप्लिकेशन चलाएं, उदाहरण के लिए XC8-1.00.11403-windows.exe और स्क्रीन पर निर्देशों का पालन करें। डिफ़ॉल्ट स्थापना निर्देशिका की अनुशंसा की जाती है। यदि आप Linux का उपयोग कर रहे हैं, तो आपको टर्मिनल का उपयोग करके और रूट खाते से कंपाइलर स्थापित करना होगा। व्यवस्थापक विशेषाधिकारों के साथ macOS खाते का उपयोग करके इंस्टॉल करें। सक्रियण अब स्थापना के लिए अलग से किया जाता है। अधिक जानकारी के लिए MPLAB® XC C कंपाइलर्स (DS52059) के लिए लाइसेंस प्रबंधक दस्तावेज़ देखें। यदि आप अपनी HPA सदस्यता की समाप्ति के 14 दिनों के भीतर हैं, तो वही चेतावनी जारी की जाती है। XC नेटवर्क लाइसेंस सर्वर एक अलग इंस्टॉलर है और इसे सिंगल-यूजर कंपाइलर इंस्टॉलर में शामिल नहीं किया गया है। XC लाइसेंस मैनेजर अब फ्लोटिंग नेटवर्क लाइसेंस के रोमिंग का समर्थन करता है। मोबाइल उपयोगकर्ताओं को ध्यान में रखते हुए, यह सुविधा फ्लोटिंग लाइसेंस को थोड़े समय के लिए नेटवर्क से बाहर जाने की अनुमति देती है। इस सुविधा का उपयोग करके, आप नेटवर्क से डिस्कनेक्ट कर सकते हैं और फिर भी अपने MPLAB XC कंपाइलर का उपयोग कर सकते हैं। इस सुविधा के बारे में अधिक जानकारी के लिए XCLM इंस्टॉल के डॉक फ़ोल्डर को देखें। MPLAB X IDE में रोमिंग को विज़ुअली प्रबंधित करने के लिए लाइसेंस विंडो (टूल > लाइसेंस) शामिल है।

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

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

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

संकलक प्रलेखन
कम्पाइलर के यूजर गाइड को HTML पेज से खोला जा सकता है जो आपके ब्राउज़र में MPLAB X IDE डैशबोर्ड में नीले रंग के हेल्प बटन पर क्लिक करने पर खुलता है, जैसा कि स्क्रीनशॉट में दिखाया गया है।माइक्रोचिप-XC8-C-कंपाइलर-संस्करण-2-45-रिलीज़-नोट्स-फॉर-AVR-MCU-1

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

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

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

MPLAB XC8 दस्तावेज़ों के ऑन-लाइन और अप-टू-डेट संस्करणों के लिए, कृपया माइक्रोचिप के ऑनलाइन तकनीकी दस्तावेज़ीकरण पर जाएँ webसाइट।
इस रिलीज़ में नया या अपडेट किया गया AVR दस्तावेज़ीकरण:

कोई नहीं

  • AVR® GNU टूलचेन से MPLAB® XC8 माइग्रेशन गाइड स्रोत कोड और निर्माण विकल्पों में उन परिवर्तनों का वर्णन करता है, जिनकी आवश्यकता तब हो सकती है, जब आप C-आधारित प्रोजेक्ट को AVR 8-बिट GNU टूलचेन से माइक्रोचिप MPLAB XC8 C कंपाइलर में माइग्रेट करने का निर्णय लेते हैं।
  • माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी संदर्भ गाइड माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी द्वारा परिभाषित कार्यों के व्यवहार और इंटरफ़ेस के साथ-साथ लाइब्रेरी प्रकारों और मैक्रोज़ के इच्छित उपयोग का वर्णन करता है। इस जानकारी का कुछ हिस्सा पहले AVR® MCU के लिए MPLAB® XC8 C कंपाइलर उपयोगकर्ता गाइड में शामिल था। डिवाइस-विशिष्ट लाइब्रेरी जानकारी अभी भी इस कंपाइलर गाइड में शामिल है।
  • यदि आप 8-बिट डिवाइस और MPLAB XC8 C कंपाइलर के साथ अभी शुरुआत कर रहे हैं, तो MPLAB® XC8 उपयोगकर्ता
  • एम्बेडेड इंजीनियर्स के लिए गाइड – AVR® MCUs (DS50003108) में MPLAB X IDE में प्रोजेक्ट सेट अप करने और अपने पहले MPLAB XC8 C प्रोजेक्ट के लिए कोड लिखने की जानकारी है। यह गाइड अब कंपाइलर के साथ वितरित की जाती है।
  • हेक्समेट उपयोगकर्ता मार्गदर्शिका उन लोगों के लिए है जो हेक्समेट को एक स्टैंड-अलोन अनुप्रयोग के रूप में चला रहे हैं।

नया क्या है

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

संस्करण 2.45
यूनिवर्सल लाइसेंस मैनेजर (XC8-3175, XCLM-224) कंपाइलर के साथ उपयोग किए जाने वाले लाइसेंस मैनेजर का macOS संस्करण अब यूनिवर्सल है, जो Intel- और M1-आधारित दोनों मशीनों के लिए मूल समर्थन प्रदान करता है। लाइसेंस मैनेजर के Linux संस्करण के लिए अब कम से कम glibc का संस्करण 2.25 होना आवश्यक है। Mac यूनिवर्सल बाइनरी (XC8-3168, XC8-2951) macOS के लिए कंपाइलर बाइनरी फ़ाइलें अब यूनिवर्सल हैं, जो Intel- और M1-आधारित दोनों मशीनों के लिए मूल समर्थन प्रदान करती हैं। फ्लोटिंग-पॉइंट लाइब्रेरी साइज़ में कमी (XC8-3112, XC8-3071) फ्लोटिंग-पॉइंट लाइब्रेरी फ़ंक्शन में सुधार किए गए हैं, जिसमें sinf() pow(), sqrt(), expf(), log1fp(), और nextafterf() शामिल हैं, जो इन रूटीन के लिए कोड साइज़ में कमी देखते हैं। नया डिवाइस समर्थन अब निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28, और AVR16EB32.

संस्करण 2.41

  • बूटरो समर्थन (XC8-3053) संकलक .bootrow उपसर्ग वाले किसी भी अनुभाग की सामग्री को HEX फ़ाइल में पते 0x860000 पर रखेगा। इन अनुभागों का उपयोग BOOTROW मेमोरी के लिए किया जाता है, जिसे कुंजियों और अन्य सुरक्षित सूचनाओं के भंडारण के लिए डिज़ाइन किया गया है जो केवल बूटलोडर के लिए सुलभ होनी चाहिए।
  • अनावश्यक रिटर्न उन्मूलन (XC8-3048) जब कस्टम लिंकर स्क्रिप्ट का उपयोग किया जाता है, तो कंपाइलर अब टेल जंप वाले फ़ंक्शन में अनावश्यक रिट निर्देशों को हटा देगा। यह पहले किए गए अनुकूलन के समान है, लेकिन अब यह सभी अनाथ अनुभागों पर किया जाता है, भले ही कस्टम लिंकर स्क्रिप्ट का उपयोग किया गया हो और सर्वश्रेष्ठ फ़िट आवंटन योजना लागू न हो।
  • समय प्रकार परिवर्तन (XC8-2982, 2932) C99 मानक लाइब्रेरी प्रकार, time_t को long long से unsigned long प्रकार में बदल दिया गया है, जो कुछ समय-संबंधित फ़ंक्शनों में कोड-आकार में सुधार देता है, जैसे mktime().
  • नया nop (XC8-2946, 2945) मैक्रो NOP() को जोड़ा गया है यह मैक्रो आउटपुट में nop no-operation निर्देश सम्मिलित करता है।
  • XCLM (XC8-2944) में अद्यतन संकलक के साथ प्रयुक्त लाइसेंस प्रबंधक को अद्यतन कर दिया गया है तथा अब यह संकलक के लाइसेंस विवरण की जांच करते समय अधिक प्रतिक्रियाशील है।
  • Trampओलाइन्ड कॉल (XC8-2760) कंपाइलर अब लंबे-फॉर्म कॉल निर्देशों को छोटे सापेक्ष कॉल के साथ प्रतिस्थापित कर सकता है जब निर्देशों के सापेक्ष रूप सामान्य रूप से उनके गंतव्य की सीमा से बाहर होंगे। इस स्थिति में, कंपाइलर rcall निर्देशों को jmp कॉल निर्देश से बदलने का प्रयास करेगा जो 'tr' होगाampoline' निष्पादन को आवश्यक पते पर भेजना, उदाहरण के लिएampपर:

संस्करण 2.40

  • नया डिवाइस समर्थन अब निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, और AVR64EA48.
  • बेहतर प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अमूर्तता (पीए) अनुकूलन उपकरण में सुधार किया गया है ताकि फ़ंक्शन कॉल निर्देश (कॉल/आरकॉल) वाले कोड को रेखांकित किया जा सके। यह केवल तभी होगा जब स्टैक का उपयोग फ़ंक्शन को तर्क पास करने या उससे रिटर्न वैल्यू प्राप्त करने के लिए नहीं किया जाता है। स्टैक का उपयोग तब किया जाता है जब एक चर तर्क सूची वाले फ़ंक्शन को कॉल किया जाता है या जब एक फ़ंक्शन को कॉल किया जाता है जो इस उद्देश्य के लिए निर्दिष्ट रजिस्टरों की तुलना में अधिक तर्क लेता है। इस सुविधा को - mno-pa-outline-calls विकल्प का उपयोग करके अक्षम किया जा सकता है, या प्रक्रियात्मक अमूर्तता को -mno-pa-on- का उपयोग करके ऑब्जेक्ट फ़ाइल और या फ़ंक्शन के लिए पूरी तरह से अक्षम किया जा सकता है।file -mno-pa-on-function, क्रमशः, या फ़ंक्शन के साथ चुनिंदा रूप से nopa विशेषता (__nopa specifier) का उपयोग करके।
  • कोड कवरेज मैक्रो यदि वैध -mcodecov विकल्प निर्दिष्ट किया गया है तो कंपाइलर अब मैक्रो __CODECOV को परिभाषित करता है।
  • मेमोरी आरक्षण विकल्प xc8-cc ड्राइवर अब AVR लक्ष्यों के निर्माण के समय -mreserve=space@start:end विकल्प को स्वीकार करेगा। यह विकल्प डेटा या प्रोग्राम मेमोरी स्पेस में निर्दिष्ट मेमोरी रेंज को सुरक्षित रखता है, जिससे लिंकर को इस क्षेत्र में कोड या ऑब्जेक्ट को पॉपुलेट करने से रोका जा सकता है।
  • स्मार्ट IO स्मार्ट IO फ़ंक्शन में कई सुधार किए गए हैं, जिसमें printf कोर कोड में सामान्य बदलाव, %n रूपांतरण विनिर्देशक को एक स्वतंत्र संस्करण के रूप में मानना, मांग पर vararg पॉप रूटीन को जोड़ना, IO फ़ंक्शन तर्कों को संभालने के लिए जहाँ संभव हो वहाँ छोटे डेटा प्रकारों का उपयोग करना, और फ़ील्ड चौड़ाई और परिशुद्धता हैंडलिंग में सामान्य कोड को शामिल करना शामिल है। इससे कोड और डेटा की महत्वपूर्ण बचत हो सकती है, साथ ही IO की निष्पादन गति भी बढ़ सकती है।

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

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

संस्करण 2.35

  • नया उपकरण समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, और AVR64DD32।
  • बेहतर संदर्भ स्विचिंग नया -mcall-isr-prologues विकल्प यह बदलता है कि इंटरप्ट फ़ंक्शन एंट्री पर रजिस्टर कैसे सहेजते हैं और इंटरप्ट रूटीन समाप्त होने पर उन रजिस्टरों को कैसे पुनर्स्थापित किया जाता है। यह -mcall-prologues विकल्प के समान तरीके से काम करता है, लेकिन केवल इंटरप्ट फ़ंक्शन (ISR) को प्रभावित करता है।
  • और भी बेहतर संदर्भ स्विचिंग नया -mgas-isr-prologues विकल्प छोटे इंटरप्ट सर्विस रूटीन के लिए उत्पन्न संदर्भ स्विच कोड को नियंत्रित करता है। सक्षम होने पर, यह सुविधा असेंबलर को रजिस्टर उपयोग के लिए ISR को स्कैन करने देगी और केवल तभी इन उपयोग किए गए रजिस्टरों को सहेजेगी जब आवश्यक हो।
  • कॉन्फ़िगर करने योग्य फ्लैश मैपिंग AVR DA और AVR DB परिवार में कुछ डिवाइस में एक SFR (जैसे FLMAP) होता है जो निर्दिष्ट करता है कि प्रोग्राम मेमोरी का कौन सा 32k सेक्शन डेटा मेमोरी में मैप किया जाएगा। नए - mconst-data-in-config-mapped-progmem विकल्प का उपयोग लिंकर को सभी -क्वालिफाइड डेटा को एक 32k सेक्शन में रखने और संबंधित SFR रजिस्टर को स्वचालित रूप से आरंभ करने के लिए किया जा सकता है ताकि यह सुनिश्चित हो सके कि यह डेटा डेटा मेमोरी स्पेस में मैप किया गया है, जहाँ इसे अधिक प्रभावी ढंग से एक्सेस किया जाएगा।
  • माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी सभी MPLAB XC कंपाइलर एक माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी साझा करेंगे, जो अब MPLAB XC8 के इस रिलीज़ के साथ उपलब्ध है। AVR® MCU के लिए MPLAB® XC8 C कंपाइलर उपयोगकर्ता गाइड में अब इन मानक फ़ंक्शन के लिए दस्तावेज़ शामिल नहीं हैं। यह जानकारी अब माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी संदर्भ गाइड में पाई जा सकती है। ध्यान दें कि avr-libc द्वारा पहले परिभाषित कुछ कार्यक्षमता अब उपलब्ध नहीं है। (लाइब्रेरी कार्यक्षमता देखें।)
  • स्मार्ट IO नई एकीकृत लाइब्रेरी के भाग के रूप में, printf और scanf परिवारों में IO फ़ंक्शन अब प्रत्येक बिल्ड पर कस्टम-जनरेट किए जाते हैं, जो इस बात पर आधारित होते हैं कि प्रोग्राम में इन फ़ंक्शन का उपयोग कैसे किया जाता है। इससे प्रोग्राम द्वारा उपयोग किए जाने वाले संसाधनों में काफी कमी आ सकती है।
  • स्मार्ट IO सहायता विकल्प स्मार्ट IO फ़ंक्शन (जैसे printf() या scanf()) के लिए कॉल का विश्लेषण करते समय कंपाइलर हमेशा फ़ॉर्मेट स्ट्रिंग से निर्धारित नहीं कर सकता है या तर्कों से उन रूपांतरण विनिर्देशों का अनुमान नहीं लगा सकता है जो कॉल द्वारा आवश्यक हैं। पहले, कंपाइलर हमेशा कोई धारणा नहीं बनाता था और यह सुनिश्चित करता था कि पूरी तरह कार्यात्मक IO फ़ंक्शन अंतिम प्रोग्राम छवि में लिंक किए गए थे। एक नया -msmart-io-format=fmt विकल्प जोड़ा गया है ताकि कंपाइलर को स्मार्ट IO फ़ंक्शन द्वारा उपयोग किए जाने वाले रूपांतरण विनिर्देशों के बारे में उपयोगकर्ता द्वारा सूचित किया जा सके, जिनका उपयोग अस्पष्ट है, जिससे अत्यधिक लंबे IO रूटीन को लिंक होने से रोका जा सके। (अधिक जानकारी के लिए smart-io-format विकल्प देखें।)
  • कस्टम सेक्शन रखना पहले, -Wl,–section-start विकल्प केवल निर्दिष्ट सेक्शन को अनुरोधित पते पर रखता था जब लिंकर स्क्रिप्ट उसी नाम से आउटपुट सेक्शन को परिभाषित करती थी। जब ऐसा नहीं होता था, तो सेक्शन को लिंकर द्वारा चुने गए पते पर रखा जाता था और विकल्प को अनिवार्य रूप से अनदेखा कर दिया जाता था। अब विकल्प को सभी कस्टम सेक्शन के लिए सम्मानित किया जाएगा, भले ही लिंकर स्क्रिप्ट सेक्शन को परिभाषित न करे। हालाँकि, ध्यान दें कि मानक सेक्शन, जैसे .text, .bss या .data के लिए, सर्वश्रेष्ठ फिट आवंटनकर्ता के पास अभी भी उनके प्लेसमेंट पर पूरा नियंत्रण होगा, और विकल्प का कोई प्रभाव नहीं होगा। उपयोगकर्ता गाइड में वर्णित अनुसार -Wl,-Tsection=addr विकल्प का उपयोग करें।

संस्करण 2.32

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

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

संस्करण 2.30

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

संस्करण 2.29 (कार्यात्मक सुरक्षा रिलीज)

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

संस्करण 2.20

  • नया डिवाइस समर्थन निम्नलिखित AVR भागों के लिए समर्थन उपलब्ध है: ATTINY1624, ATTINY1626, और ATTINY1627.
  • बेहतर बेस्ट फिट आवंटन कंपाइलर में बेस्ट फिट आवंटनकर्ता (BFA) में सुधार किया गया है ताकि अनुभागों को बेहतर अनुकूलन की अनुमति देने वाले क्रम में आवंटित किया जा सके। BFA अब नामित पता स्थानों का समर्थन करता है और डेटा आरंभीकरण को बेहतर ढंग से संभालता है।
  • प्रक्रियात्मक अमूर्तता में सुधार प्रक्रियात्मक अमूर्तता अनुकूलन अब अधिक कोड अनुक्रमों पर किए जाते हैं। पिछली परिस्थितियाँ जहाँ इस अनुकूलन से कोड का आकार बढ़ सकता था, उन्हें अनुकूलन कोड को लिंकर की कचरा संग्रहण प्रक्रिया से अवगत कराकर संबोधित किया गया है।
  • AVR असेंबलर का अभाव AVR असेंबलर अब इस वितरण के साथ शामिल नहीं है।

संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

संस्करण 2.10

  • कोड कवरेज इस रिलीज़ में एक कोड कवरेज सुविधा शामिल है जो इस बात का विश्लेषण करने में सहायता करती है कि किसी प्रोजेक्ट के स्रोत कोड को किस सीमा तक निष्पादित किया गया है। इसे सक्षम करने के लिए -mcodecov=ram विकल्प का उपयोग करें। आपके हार्डवेयर पर प्रोग्राम के निष्पादन के बाद, कोड कवरेज जानकारी डिवाइस में एकत्रित की जाएगी, और इसे कोड कवरेज प्लगइन के माध्यम से MPLAB X IDE में स्थानांतरित और प्रदर्शित किया जा सकता है। इस प्लगइन पर जानकारी प्राप्त करने के लिए IDE दस्तावेज़ देखें।
    कवरेज विश्लेषण से बाद के फ़ंक्शन को बाहर करने के लिए #pragma nocodecov का उपयोग किया जा सकता है। आदर्श रूप से pragma को फ़ाइल की शुरुआत में जोड़ा जाना चाहिए ताकि उस पूरी फ़ाइल को कवरेज विश्लेषण से बाहर रखा जा सके। वैकल्पिक रूप से, __attribute__((nocodecov)) का उपयोग कवरेज विश्लेषण से किसी विशिष्ट फ़ंक्शन को बाहर रखने के लिए किया जा सकता है।
  • डिवाइस विवरण फ़ाइलें avr_chipinfo.html नामक एक नई डिवाइस फ़ाइल कंपाइलर वितरण की दस्तावेज़ निर्देशिका में स्थित है। यह फ़ाइल कंपाइलर द्वारा समर्थित सभी डिवाइस सूचीबद्ध करती है। किसी डिवाइस के नाम पर क्लिक करें, और यह उस डिवाइस के लिए सभी स्वीकार्य कॉन्फ़िगरेशन बिट सेटिंग/मान जोड़े दिखाते हुए एक पेज खोलेगा, उदाहरण के लिएampलेस.
  • प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अमूर्तता अनुकूलन, जो असेंबली कोड के सामान्य ब्लॉक को उस ब्लॉक की निकाली गई कॉपी के लिए कॉल के साथ प्रतिस्थापित करते हैं, को कंपाइलर में जोड़ा गया है। ये एक अलग एप्लिकेशन द्वारा निष्पादित किए जाते हैं, जिसे लेवल 2, 3 या XNUMX ऑप्टिमाइजेशन का चयन करते समय कंपाइलर द्वारा स्वचालित रूप से आमंत्रित किया जाता है। ये अनुकूलन कोड के आकार को कम करते हैं, लेकिन वे निष्पादन की गति और कोड डीबग करने की क्षमता को कम कर सकते हैं। प्रक्रियात्मक अमूर्तता को -mno-pa विकल्प का उपयोग करके उच्च अनुकूलन स्तरों पर अक्षम किया जा सकता है, या -mpa का उपयोग करके कम अनुकूलन स्तरों (आपके लाइसेंस के अधीन) पर सक्षम किया जा सकता है। इसे -mno-pa-on- का उपयोग करके ऑब्जेक्ट फ़ाइल के लिए अक्षम किया जा सकता हैfile=fileनाम, या -mno-pa-on-function=function का उपयोग करके फ़ंक्शन के लिए अक्षम किया जा सकता है। आपके स्रोत कोड के अंदर, फ़ंक्शन की परिभाषा के साथ __attribute__((nopa)) का उपयोग करके या __nopa का उपयोग करके फ़ंक्शन के लिए प्रक्रियात्मक अमूर्तता को अक्षम किया जा सकता है, जो __attribute__((nopa,noinline)) तक विस्तारित होता है और इस प्रकार फ़ंक्शन इनलाइनिंग को होने से रोकता है और इनलाइन कोड का अमूर्तन होता है।
  • प्रैग्मा में लॉक बिट समर्थन #pragma कॉन्फ़िगरेशन का उपयोग अब AVR लॉक बिट्स के साथ-साथ अन्य कॉन्फ़िगरेशन बिट्स को निर्दिष्ट करने के लिए किया जा सकता है। इस प्रैग्मा के साथ उपयोग करने के लिए सेटिंग/मूल्य जोड़े के लिए avr_chipinfo.html फ़ाइल (ऊपर उल्लिखित) की जाँच करें।
  • नए डिवाइस समर्थन निम्नलिखित भागों के लिए समर्थन उपलब्ध है: 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 कॉमन सी इंटरफ़ेस के अनुरूप हो सकता है, जिससे स्रोत कोड को सभी MPLAB XC कंपाइलर में अधिक आसानी से पोर्ट किया जा सकता है। -mext=cci विकल्प इस सुविधा का अनुरोध करता है, जिससे कई भाषा एक्सटेंशन के लिए वैकल्पिक सिंटैक्स सक्षम होता है।
  • नया लाइब्रेरियन ड्राइवर एक नया लाइब्रेरियन ड्राइवर पिछले PIC लाइब्रेरियन और AVR avr-ar लाइब्रेरियन के ऊपर स्थित है। यह ड्राइवर GCC-आर्काइवर-शैली के विकल्पों को स्वीकार करता है, जिन्हें या तो निष्पादित किए जा रहे लाइब्रेरियन के लिए अनुवादित किया जाता है या उसके माध्यम से पारित किया जाता है। नया ड्राइवर किसी भी PIC या AVR लाइब्रेरी फ़ाइल को बनाने या उसमें हेरफेर करने के लिए समान अर्थ वाले विकल्पों के समान सेट की अनुमति देता है और इस प्रकार लाइब्रेरियन को आमंत्रित करने का अनुशंसित तरीका है। यदि विरासत परियोजनाओं के लिए आवश्यक हो, तो पिछले लाइब्रेरियन को पुराने-शैली के विकल्पों का उपयोग करके सीधे बुलाया जा सकता है जो इसे पहले के कंपाइलर संस्करणों में स्वीकार किया गया था।

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

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

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

संस्करण 2.41
गलत fma फ़ंक्शन हटा दिए गए (XC8-2913) C99 मानक लाइब्रेरी ( ) ने एकल राउंडिंग के लिए अनंत परिशुद्धता के साथ गुणा-जोड़ की गणना नहीं की, बल्कि इसके बजाय प्रत्येक ऑपरेशन के साथ राउंडिंग त्रुटियों को संचित किया। इन फ़ंक्शन को आपूर्ति की गई लाइब्रेरी से हटा दिया गया है।

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

संस्करण 2.39 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

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

संस्करण 2.35

  • स्ट्रिंग-टू बेस को संभालना (XC8-2420) अन्य XC कंपाइलरों के साथ संगतता सुनिश्चित करने के लिए, XC8 स्ट्रिंग-टू फ़ंक्शन, जैसे strtol() आदि, अब इनपुट स्ट्रिंग को बदलने का प्रयास नहीं करेंगे यदि निर्दिष्ट आधार 36 से बड़ा है और इसके बजाय सेट करेगा। जब यह आधार मान पार हो जाता है तो C मानक फ़ंक्शन के व्यवहार को निर्दिष्ट नहीं करता है।
  • अनुपयुक्त गति अनुकूलन प्रक्रियात्मक अमूर्त अनुकूलन स्तर 3 अनुकूलन (-O3) का चयन करते समय सक्षम किए जा रहे थे। ये अनुकूलन कोड की गति की कीमत पर कोड आकार को कम करते हैं, इसलिए इन्हें निष्पादित नहीं किया जाना चाहिए था। इस अनुकूलन स्तर का उपयोग करने वाली परियोजनाओं को इस रिलीज़ के साथ निर्मित होने पर कोड आकार और निष्पादन गति में अंतर दिखाई दे सकता है।
  • लाइब्रेरी की कार्यक्षमता कई मानक C लाइब्रेरी फ़ंक्शनों के लिए कोड अब माइक्रोचिप की यूनिफाइड स्टैंडर्ड लाइब्रेरी से आते हैं, जो कि कुछ परिस्थितियों में पूर्व avr-libc लाइब्रेरी द्वारा प्रदान किए गए व्यवहार की तुलना में अलग व्यवहार प्रदर्शित कर सकते हैं। उदाहरण के लिएampले, अब फ़्लोट-फ़ॉर्मेट विनिर्देशकों के लिए फ़ॉर्मेटेड IO समर्थन चालू करने के लिए lprintf_flt लाइब्रेरी (-lprintf_flt विकल्प) में लिंक करना आवश्यक नहीं है। माइक्रोचिप यूनिफ़ाइड स्टैंडर्ड लाइब्रेरी की स्मार्ट IO विशेषताएँ इस विकल्प को अनावश्यक बनाती हैं। इसके अतिरिक्त, स्ट्रिंग और मेमोरी फ़ंक्शन (जैसे strcpy_P() आदि) के लिए _P प्रत्यय रूटीन का उपयोग जो फ़्लैश में कॉन्स्ट स्ट्रिंग पर काम करते हैं, अब आवश्यक नहीं हैं। मानक C रूटीन (जैसे strcpy() ऐसे डेटा के साथ सही ढंग से काम करेगा जब const-data-in-program-memory सुविधा सक्षम हो।

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

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

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

संस्करण 2.29 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

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

संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

संस्करण 2.10
कोई नहीं

संस्करण 2.05
प्रोग्राम मेमोरी में कॉन्स्ट ऑब्जेक्ट ध्यान दें कि डिफ़ॉल्ट रूप से, कॉन्स्ट-क्वालिफ़ाइड ऑब्जेक्ट प्रोग्राम मेमोरी में रखे जाएंगे और एक्सेस किए जाएंगे (जैसा कि यहाँ वर्णित है)। यह आपके प्रोजेक्ट के आकार और निष्पादन गति को प्रभावित करेगा, लेकिन RAM उपयोग को कम करना चाहिए। यदि आवश्यक हो, तो -mno-const-data-in-progmem विकल्प का उपयोग करके इस सुविधा को अक्षम किया जा सकता है।

संस्करण 2.00

  • कॉन्फ़िगरेशन फ़्यूज़ डिवाइस कॉन्फ़िगरेशन फ़्यूज़ को अब कॉन्फ़िगरेशन प्रैग्मा का उपयोग करके प्रोग्राम किया जा सकता है, जिसके बाद फ़्यूज़ स्थिति को निर्दिष्ट करने के लिए सेटिंग-वैल्यू जोड़े होते हैं, उदाहरण के लिए #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • निरपेक्ष ऑब्जेक्ट्स और फ़ंक्शन ऑब्जेक्ट्स और फ़ंक्शन को अब CCI __at(address) विनिर्देशक का उपयोग करके मेमोरी में विशिष्ट पते पर रखा जा सकता है, उदाहरण के लिएampपर:
    • #शामिल करना
      int फ़ूबार __at(0x800100);
      char __at(0x250) getID(int ऑफ़सेट) { … }
      इस विनिर्देशक का तर्क एक स्थिरांक होना चाहिए जो उस पते का प्रतिनिधित्व करता है जिस पर पहला बाइट या निर्देश रखा जाएगा। RAM पते 0x800000 के ऑफ़सेट का उपयोग करके इंगित किए जाते हैं। CCI को इस सुविधा का उपयोग करने में सक्षम करें।
  • नया इंटरप्ट फ़ंक्शन सिंटैक्स कंपाइलर अब CCI __interrupt(num) स्पेसिफ़ायर को स्वीकार करता है ताकि यह संकेत दिया जा सके कि C फ़ंक्शन इंटरप्ट हैंडलर हैं। स्पेसिफ़ायर एक इंटरप्ट नंबर लेता है, उदाहरण के लिएampले: #शामिल शून्य __interrupt(SPI_STC_vect_num) spi_Isr(शून्य) { … }

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

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

संस्करण 2.45

  • रोमिंग लाइसेंस विफलता (XCLM-235) रोमिंग लाइसेंस 2.28 से बाद के glibc संस्करणों का उपयोग करने वाले Linux प्लेटफॉर्म पर सही ढंग से काम करने में विफल रहे।
  • संरचनाओं की सरणियों के साथ आंतरिक त्रुटि (XC8-3069) जब किसी संरचना के बहु-आयामी सरणी सदस्यों को संसाधित किया गया, तो पता स्थान क्वालीफ़ायर को सरणी में सही ढंग से प्रसारित नहीं किया गया। इससे पता स्थान क्वालीफ़ायर जानकारी में बेमेल हो गई और एक आंतरिक संकलक त्रुटि हुई। इस स्थिति को ठीक कर दिया गया है।
  • अप्रारंभीकृत स्ट्रीम में खराब लेखन (ML-353, XC8-3100) यदि मानक आउटपुट/त्रुटि स्ट्रीम को FDEV_SETUP_STREAM या _init_stdout/_init_stderr का उपयोग करके स्पष्ट रूप से सेटअप नहीं किया गया था, तो उन्हें लिखने का प्रयास करने से अपरिभाषित व्यवहार हुआ। इसने perror() जैसे stdlib फ़ंक्शन से लेखन को भी प्रभावित किया। इन स्ट्रीम को आरंभीकृत किए जाने से पहले उनमें कोई भी लेखन अब अनदेखा कर दिया जाएगा।
  • असमर्थित संशोधक (XC8-2505) avr-libc लाइब्रेरी printf-शैली रूपांतरण विनिर्देशकों में * संशोधक का समर्थन नहीं करती है, उदाहरण के लिएampले “%.*f”. यह अब माइक्रोचिप यूनिफाइड स्टैंडर्ड लाइब्रेरी की शुरूआत के साथ समर्थित है।
  • एकाधिक अप्रारंभीकृत चेतावनियाँ (XC8-2409) संकलक एकाधिक समान चेतावनी संदेश जारी कर रहा था जब एक स्थिर सरणी का सामना करना पड़ा जो आरंभीकृत नहीं थी। संदेश को केवल एक बार जारी किया जाना चाहिए था, जो अब इस स्थिति के होने पर होता है।

संस्करण 2.41

  • वेंचुरा (XC8-3088) पर डोंगल संबंधी समस्याएँ संकलक को लाइसेंस देने के लिए उपयोग किए जाने वाले डोंगल को macOS वेंचुरा होस्ट पर ठीक से पढ़ा नहीं जा सका, जिसके परिणामस्वरूप लाइसेंसिंग विफलताएँ हुईं। XCLM लाइसेंस प्रबंधक में परिवर्तन इस समस्या को ठीक करते हैं।
  • मेमोरी आवंटन का गलत संकेत (XC8-2925) सरल गतिशील मेमोरी आवंटन कार्यान्वयन का उपयोग करते समय अनुरोध किए गए मानक लाइब्रेरी मेमोरी प्रबंधन फ़ंक्शन (malloc() आदि) का उपयोग करके मेमोरी के SIZE_MAX बाइट्स (या इसके करीब का मान) आवंटित करने का प्रयास करना। ऐसी स्थितियों में अब एक NULL पॉइंटर लौटाया जाएगा और errno को ENOMEM पर सेट किया जाएगा।
  • गलत fma फ़ंक्शन हटाए गए (XC8-2913) C99 मानक लाइब्रेरी fma()-फ़ैमिली फ़ंक्शन ( ) ने एकल राउंडिंग के लिए अनंत परिशुद्धता के साथ गुणा-जोड़ की गणना नहीं की, बल्कि इसके बजाय प्रत्येक ऑपरेशन के साथ राउंडिंग त्रुटियों को संचित किया। इन फ़ंक्शन को आपूर्ति की गई लाइब्रेरी से हटा दिया गया है।
  • स्ट्रिंग रूपांतरण का खराब संचालन (XC8-2921, XC8-2652) जब strtod() द्वारा रूपांतरण के लिए 'विषय अनुक्रम' में एक्सपोनेंशियल प्रारूप में एक फ़्लोटिंग-पॉइंट संख्या दिखाई देती थी और e/E वर्ण के बाद एक अप्रत्याशित वर्ण था, तब जहाँ endptr प्रदान किया गया था, उसे एक पता दिया गया था जो कि के बाद के वर्ण को इंगित करता था, जबकि इसे e//E वर्ण को ही इंगित करना चाहिए था, क्योंकि उसे रूपांतरित नहीं किया गया था। उदाहरण के लिएample, strtod(“100exx”, &ep) को 100.00 लौटाना चाहिए और ep को स्ट्रिंग के “exx” भाग की ओर इंगित करने के लिए सेट करना चाहिए, जबकि फ़ंक्शन सही मान लौटा रहा था लेकिन स्ट्रिंग के “xx” भाग को सेट कर रहा था।

संस्करण 2.40

  • बहुत ज़्यादा रिलैक्स (XC8-2876) -mrelax विकल्प का उपयोग करते समय, कंपाइलर कुछ सेक्शन को एक साथ आवंटित नहीं कर रहा था, जिसके परिणामस्वरूप कम इष्टतम कोड आकार हो रहे थे। यह नए MUSL लाइब्रेरीज़ या कमज़ोर प्रतीकों का उपयोग करने वाले कोड के साथ हो सकता है।
  • चेतावनी में बताए अनुसार मैपिंग सुविधा अक्षम नहीं है (XC8-2875) const-data-in-config-mapped-progmem सुविधा सक्षम होने पर निर्भर है। यदि const-data-in-config-mapped-progmem सुविधा को विकल्प का उपयोग करके स्पष्ट रूप से सक्षम किया गया था और const-data-in-progmem सुविधा को अक्षम किया गया था, तो लिंक चरण विफल हो गया, एक चेतावनी संदेश के बावजूद जिसमें बताया गया था कि const-data-in-config-mapped-progmem सुविधा को स्वचालित रूप से अक्षम कर दिया गया था, जो पूरी तरह से सही नहीं था। इस स्थिति में const-data-in-config-mapped-progmem सुविधा अब पूरी तरह से अक्षम है।
  • NVMCTRL तक सही तरीके से पहुँचने के लिए DFP में परिवर्तन (XC8-2848) AVR64EA डिवाइस द्वारा उपयोग किए जाने वाले रनटाइम स्टार्टअप कोड ने इस बात को ध्यान में नहीं रखा कि NVMCTRL रजिस्टर कॉन्फ़िगरेशन चेंज प्रोटेक्शन (CCP) के अंतर्गत था और const-data-in-config-mapped-progmem कंपाइलर सुविधा द्वारा उपयोग किए जाने वाले पेज पर IO SFR सेट करने में सक्षम नहीं था। AVR-Ex_DFP संस्करण 2.2.55 में किए गए परिवर्तन रनटाइम स्टार्टअप कोड को इस रजिस्टर में सही तरीके से लिखने की अनुमति देंगे।
  • फ्लैश मैपिंग से बचने के लिए DFP में बदलाव (XC8-2847) AVR128DA28/32/48/64 सिलिकॉन इरेटा (DS80000882) में रिपोर्ट की गई फ्लैश-मैपिंग डिवाइस सुविधा के साथ एक समस्या के लिए एक समाधान लागू किया गया है। const-data-in-config-mapped-progmem कंपाइलर सुविधा प्रभावित डिवाइस के लिए डिफ़ॉल्ट रूप से लागू नहीं होगी, और यह परिवर्तन AVR-Dx_DFP संस्करण 2.2.160 में दिखाई देगा।
  • sinhf या coshf के साथ बिल्ड त्रुटि (XC8-2834) sinhf() या coshf() लाइब्रेरी फ़ंक्शन का उपयोग करने के प्रयासों के परिणामस्वरूप एक लिंक त्रुटि हुई, जो एक अपरिभाषित संदर्भ का वर्णन करती है। संदर्भित गुम फ़ंक्शन को अब कंपाइलर वितरण में शामिल कर लिया गया है।
  • नोपा के साथ बिल्ड त्रुटियाँ (XC8-2833) नोपा विशेषता का उपयोग किसी ऐसे फ़ंक्शन के साथ करना जिसका असेंबलर नाम __asm__() का उपयोग करके निर्दिष्ट किया गया है, असेंबलर से त्रुटि संदेश ट्रिगर करता है। यह संयोजन संभव नहीं है।
  • पॉइंटर तर्कों के साथ वैरिएडिक फ़ंक्शन विफलता (XC8-2755, XC8-2731) तर्कों की एक चर संख्या वाले फ़ंक्शन 24-बिट (__memx प्रकार) पॉइंटर्स को वैरिएबल तर्क सूची में पास किए जाने की अपेक्षा करते हैं जब const-data-in-progmem सुविधा सक्षम होती है। डेटा मेमोरी के पॉइंटर्स वाले तर्क 16-बिट ऑब्जेक्ट के रूप में पास किए जा रहे थे, जिससे अंततः उन्हें पढ़ने पर कोड विफलता हुई। जब const-data-in-progmem सुविधा सक्षम होती है, तो सभी 16-बिट पॉइंटर्स तर्क अब 24-बिट पॉइंटर्स में परिवर्तित हो जाते हैं।
  • strtoxxx लाइब्रेरी फ़ंक्शन विफल (XC8-2620) जब const-data-in-progmem सुविधा सक्षम थी, तो strtoxxx लाइब्रेरी फ़ंक्शन में endptr पैरामीटर प्रोग्राम मेमोरी में नहीं मौजूद स्रोत स्ट्रिंग तर्कों के लिए ठीक से अद्यतन नहीं किया गया था।
  • अमान्य कास्ट के लिए अलर्ट (XC8-2612) यदि const-in-progmem सुविधा सक्षम है और स्ट्रिंग लिटरल का पता स्पष्ट रूप से डेटा एड्रेस स्पेस में कास्ट किया गया है (const क्वालिफायर को हटाकर), तो कंपाइलर अब एक त्रुटि जारी करेगा।ample, (uint8_t *) “Hello World!” . यदि const डेटा पॉइंटर को स्पष्ट रूप से डेटा एड्रेस स्पेस में डाला जाता है, तो पता अमान्य हो सकता है, तो एक चेतावनी जारी की जाती है।
  • अप्रारंभीकृत const ऑब्जेक्ट्स का प्लेसमेंट (XC8-2408) अप्रारंभीकृत और const अस्थिर ऑब्जेक्ट्स const
    उन डिवाइसों पर प्रोग्राम मेमोरी में नहीं रखा जा रहा था जो अपनी प्रोग्राम मेमोरी के सभी या कुछ भाग को डेटा एड्रेस स्पेस में मैप करते हैं। इन डिवाइसों के लिए, ऐसे ऑब्जेक्ट अब प्रोग्राम मेमोरी में रखे जाते हैं, जिससे उनका संचालन अन्य डिवाइसों के साथ सुसंगत हो जाता है।

संस्करण 2.39 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

संस्करण 2.36
विलंब करते समय त्रुटि (XC8-2774) डिफ़ॉल्ट फ्री मोड अनुकूलन में मामूली परिवर्तनों ने विलंब अंतर्निहित फ़ंक्शनों में ऑपरेंड अभिव्यक्तियों के निरंतर फोल्डिंग को रोक दिया, जिसके परिणामस्वरूप उन्हें गैर-स्थिरांक के रूप में माना गया और त्रुटि को ट्रिगर किया गया: __builtin_avr_delay_cycles एक संकलन समय पूर्णांक स्थिरांक की अपेक्षा करता है।

संस्करण 2.35

  • __at का उपयोग करके सन्निहित आवंटन (XC8-2653) एक ही नाम वाले अनुभाग में कई ऑब्जेक्ट स्थानों का सन्निहित आवंटन और __at() का उपयोग करना सही ढंग से काम नहीं करता है। उदाहरण के लिएampपर:
    const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((section(“.mysec”))) = {0xEF, 0xFE}; arr2 को arr1 के तुरंत बाद रखना चाहिए था
  • सेक्शन आरंभ पते निर्दिष्ट करना (XC8-2650) -Wl,–section-start विकल्प चुपचाप नामांकित आरंभ पते पर अनुभागों को रखने में विफल हो रहा था। यह समस्या किसी भी कस्टम-नाम वाले अनुभागों के लिए ठीक कर दी गई है; हालाँकि, यह किसी भी मानक अनुभागों, जैसे कि .text या .bss के लिए काम नहीं करेगा, जिन्हें -Wl,-T विकल्प का उपयोग करके रखा जाना चाहिए। रिलैक्स करते समय लिंकर क्रैश हो जाता है (XC8-2647) जब -mrelax ऑप्टिमाइज़ेशन सक्षम था और ऐसे कोड या डेटा अनुभाग थे जो उपलब्ध मेमोरी में फ़िट नहीं हुए, तो लिंकर क्रैश हो गया। अब, ऐसी परिस्थिति में, इसके बजाय त्रुटि संदेश जारी किए जाते हैं।
  • नो-फॉलिंग-बैक (XC8-2646) –नोफॉलबैक विकल्प को सही तरीके से लागू नहीं किया गया था, न ही इसका दस्तावेजीकरण किया गया था। अब यह सुनिश्चित करने के लिए चुना जा सकता है कि यदि कंपाइलर बिना लाइसेंस वाला है तो कंपाइलर कम ऑप्टिमाइज़ेशन सेटिंग पर वापस नहीं जाएगा, और इसके बजाय एक त्रुटि जारी करेगा।
  • अनुपयुक्त गति अनुकूलन (XC8-2637) स्तर 3 अनुकूलन (-O3) का चयन करते समय प्रक्रियात्मक अमूर्त अनुकूलन सक्षम किए जा रहे थे। ये अनुकूलन कोड की गति की कीमत पर कोड के आकार को कम करते हैं, इसलिए इन्हें निष्पादित नहीं किया जाना चाहिए था।
  • खराब EEPROM एक्सेस (XC8-2629) - mconst-data-in-progmem विकल्प सक्षम होने पर (जो कि डिफ़ॉल्ट स्थिति है) eeprom_read_block रूटीन Xmega डिवाइस पर सही ढंग से काम नहीं करता था, जिसके परिणामस्वरूप EEPROM मेमोरी को सही ढंग से नहीं पढ़ा जा रहा था।
  • अमान्य मेमोरी आवंटन (XC8-2593, XC8-2651) जब -Ttext या -Tdata लिंकर विकल्प (उदाहरण के लिएampयदि -Wl ड्राइवर विकल्प का उपयोग करके पारित किया गया पाठ) निर्दिष्ट किया जाता है, तो संबंधित पाठ/डेटा क्षेत्र मूल को अद्यतन किया गया था; तथापि, अंतिम पता तदनुसार समायोजित नहीं किया गया था, जिसके कारण क्षेत्र लक्ष्य डिवाइस की मेमोरी सीमा को पार कर सकता था।
  • ओवर-एट्रिब्यूटेड फ़ंक्शन के साथ क्रैश (XC8-2580) यदि फ़ंक्शन को एक से अधिक इंटरप्ट, सिग्नल या एनएमआई विशेषताओं का उपयोग करके घोषित किया गया था, तो कंपाइलर क्रैश हो गया, उदाहरण के लिए, __attribute__((__signal__, __interrupt__))।
  • अमान्य ATtiny इंटरप्ट कोड (XC8-2465) जब ATtiny डिवाइस के लिए निर्माण किया गया था और अनुकूलन अक्षम थे (-O0), तो इंटरप्ट फ़ंक्शन ने ऑपरेंड को सीमा से बाहर ट्रिगर किया हो सकता है
  • विकल्पों को पास नहीं किया जा रहा है (XC8-2452) -Wl विकल्प का उपयोग एकाधिक, अल्पविराम से अलग किए गए लिंकर विकल्पों के साथ करते समय, सभी लिंकर विकल्प लिंकर को पास नहीं किए जा रहे थे।
  • प्रोग्राम मेमोरी को अप्रत्यक्ष रूप से पढ़ने में त्रुटि (XC8-2450) कुछ उदाहरणों में, प्रोग्राम मेमोरी में पॉइंटर से दो बाइट मान पढ़ते समय कंपाइलर एक आंतरिक त्रुटि (पहचानने योग्य insn ) उत्पन्न करता है

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

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

संस्करण 2.30

  • वैश्विक लेबल रूपरेखा बनाने के बाद गलत स्थान पर रखे गए (XC8-2299) हस्तलिखित असेंबली कोड जो वैश्विक लेबल को असेंबली अनुक्रमों के भीतर रखता है, जिन्हें प्रक्रियात्मक अमूर्तता द्वारा अलग कर दिया जाता है, संभवतः सही ढंग से पुनः स्थापित नहीं किया गया है।
  • रिलैक्सिंग क्रैश (XC8-2287) -mrelax विकल्प का उपयोग करने से लिंकर क्रैश हो सकता है जब टेल जंप रिलैक्सेशन ऑप्टिमाइजेशन ने ret निर्देश को हटाने का प्रयास किया जो किसी अनुभाग के अंत में नहीं था।
  • लेबल को मान के रूप में अनुकूलित करते समय क्रैश (XC8-2282) "लेबल को मान के रूप में" GNU C भाषा एक्सटेंशन का उपयोग करने वाले कोड के कारण प्रक्रियात्मक अमूर्तन अनुकूलन क्रैश हो सकता है, जिसमें रेंज स्पैन फिक्सअप त्रुटि हो सकती है।
  • ऐसा नहीं है const (XC8-2271) strstr() और अन्य फ़ंक्शनों के लिए प्रोटोटाइप जब const -mconst-data-in-progmem सुविधा अक्षम होती है, तो लौटाए गए स्ट्रिंग पॉइंटर्स पर गैर-मानक क्वालीफ़ायर निर्दिष्ट नहीं किया जाता है। ध्यान दें कि avrxmega3 और avrtiny डिवाइस के साथ, यह सुविधा स्थायी रूप से सक्षम है।
  • खोए हुए आरंभकर्ता (XC8-2269) जब किसी अनुवाद इकाई में एक से अधिक चर को एक अनुभाग में रखा गया था (__section या __attribute__((section)) का उपयोग करके), और पहला ऐसा चर शून्य आरंभीकृत था या उसके पास आरंभकर्ता नहीं था, तो उसी अनुवाद इकाई में अन्य चरों के लिए आरंभकर्ता जो उसी अनुभाग में रखे गए थे, खो गए थे।

संस्करण 2.29 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

संस्करण 2.20

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

संस्करण 2.19 (कार्यात्मक सुरक्षा रिलीज)
कोई नहीं।

संस्करण 2.10

  • स्थानांतरण विफलताएँ (XC8-1891) सबसे अच्छा फिट आवंटनकर्ता लिंकर विश्राम के बाद खंडों के बीच मेमोरी 'छेद' छोड़ना था। मेमोरी को खंडित करने के अलावा, इसने पीसी-सापेक्ष जंप या कॉल के सीमा से बाहर होने से संबंधित लिंकर स्थानांतरण विफलताओं की संभावना को बढ़ा दिया।
  • रिलैक्सेशन द्वारा परिवर्तित नहीं किए गए निर्देश (XC8-1889) जंप या कॉल निर्देशों के लिए लिंकर रिलैक्सेशन नहीं हुआ, जिनके लक्ष्यों को रिलैक्स किए जाने पर पहुंचा जा सकता है।
  • गुम कार्यक्षमता (XC8E-388) कई परिभाषाएँ clock_div_t और clock_prescale_set() जैसे पैरामीटर, ATmega324PB, ATmega328PB, ATtiny441 और ATtiny841 सहित उपकरणों के लिए परिभाषित नहीं किए गए थे।
  • प्रीप्रोसेसर मैक्रोज़ _XC8_MODE_, __XC8_VERSION, __XC , और __XC8 स्वचालित रूप से कंपाइलर द्वारा परिभाषित किए जाते हैं। ये अब उपलब्ध हैं।

संस्करण 2.05

  • आंतरिक संकलक त्रुटि (XC8-1822) विंडोज़ के तहत निर्माण करते समय, कोड का अनुकूलन करते समय एक आंतरिक संकलक त्रुटि उत्पन्न हो सकती है।
  • RAM अतिप्रवाह का पता नहीं चला (XC8-1800, XC8-1796) उपलब्ध RAM की सीमा पार करने वाले प्रोग्रामों का कुछ स्थितियों में संकलक द्वारा पता नहीं लगाया जा सका, जिसके परिणामस्वरूप रनटाइम कोड विफलता हुई।
  • छोड़ी गई फ्लैश मेमोरी (XC8-1792) avrxmega3 और avrtiny उपकरणों के लिए, फ्लैश मेमोरी के कुछ भाग MPLAB X IDE द्वारा प्रोग्राम नहीं किए गए हो सकते हैं।
  • मुख्य निष्पादन में विफलता (XC8-1788) कुछ स्थितियों में, जहां प्रोग्राम में कोई वैश्विक चर परिभाषित नहीं था, रनटाइम स्टार्टअप कोड बाहर नहीं निकला और main() फ़ंक्शन तक कभी नहीं पहुंचा गया।
  • गलत मेमोरी जानकारी (XC8-1787) avrxmega3 और avrtiny डिवाइसों के लिए, avr-size प्रोग्राम रिपोर्ट कर रहा था कि केवल-पठन योग्य डेटा प्रोग्राम मेमोरी के बजाय RAM का उपभोग कर रहा था।
  • गलत प्रोग्राम मेमोरी रीड (XC8-1783) डेटा एड्रेस स्पेस में मैप किए गए प्रोग्राम मेमोरी वाले डिवाइसों के लिए संकलित प्रोजेक्ट्स और जो PROGMEM मैक्रो/एट्रिब्यूट का उपयोग करके ऑब्जेक्ट्स को परिभाषित करते हैं, उन्होंने इन ऑब्जेक्ट्स को गलत एड्रेस से पढ़ा हो सकता है।
  • विशेषताओं के साथ आंतरिक त्रुटि (XC8-1773) यदि आपने पॉइंटर नाम और डीरेफरेंस्ड प्रकार के बीच __at() या attribute() टोकन के साथ पॉइंटर ऑब्जेक्ट्स को परिभाषित किया है, तो एक आंतरिक त्रुटि हुई है, उदाहरण के लिएample, char * __at(0x800150) cp; यदि ऐसा कोड सामने आता है तो अब चेतावनी जारी की जाती है।
  • मुख्य (XC8-1780, XC8-1767, XC8-1754) को निष्पादित करने में विफलता EEPROM चर का उपयोग करने या कॉन्फ़िगरेशन प्रैग्मा का उपयोग करके फ़्यूज़ को परिभाषित करने से गलत डेटा आरंभीकरण और/या रनटाइम स्टार्टअप कोड में प्रोग्राम निष्पादन लॉक हो सकता है, main() तक पहुंचने से पहले।
  • छोटे उपकरणों के साथ फ्यूज त्रुटि (XC8-1778, XC8-1742) attiny4/5/9/10/20/40 उपकरणों की हेडर फ़ाइलों में गलत फ्यूज लंबाई निर्दिष्ट थी, जिसके कारण फ्यूज को परिभाषित करने वाले कोड का निर्माण करने का प्रयास करते समय लिंकर त्रुटियाँ उत्पन्न हुईं।
  • विभाजन दोष (XC8-1777) आंतरायिक विभाजन दोष को ठीक कर दिया गया है।
  • असेंबलर क्रैश (XC8-1761) जब कंपाइलर को Ubuntu 18 के अंतर्गत चलाया गया था, तो avr-as असेंबलर क्रैश हो गया होगा।
  • ऑब्जेक्ट साफ़ नहीं किए गए (XC8-1752) अप्रारंभीकृत स्थिर संग्रहण अवधि ऑब्जेक्ट संभवतः रनटाइम स्टार्टअप कोड द्वारा साफ़ नहीं किए गए हैं।
  • विरोधाभासी डिवाइस विनिर्देशन को नजरअंदाज किया गया (XC8-1749) जब एकाधिक डिवाइस विनिर्देशन विकल्पों का उपयोग किया गया और विभिन्न डिवाइसों को इंगित किया गया, तो कंपाइलर त्रुटि उत्पन्न नहीं कर रहा था।
  • हीप द्वारा मेमोरी भ्रष्ट होना (XC8-1748) __heap_start प्रतीक को गलत तरीके से सेट किया जा रहा था, जिसके परिणामस्वरूप हीप द्वारा साधारण चरों के भ्रष्ट हो जाने की संभावना थी।
  • लिंकर स्थानांतरण त्रुटि (XC8-1739) जब कोड में rjmp या rcall शामिल होता है, तो लिंकर स्थानांतरण त्रुटि उत्पन्न हो सकती है, जिसका लक्ष्य ठीक 4k बाइट्स दूर होता है।

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

ज्ञात मुद्दे

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

एमपीएलएबी एक्स आईडीई एकीकरण

  • MPLAB IDE एकीकरण यदि कंपाइलर का उपयोग MPLAB IDE से किया जाना है, तो आपको कंपाइलर स्थापित करने से पहले MPLAB IDE स्थापित करना होगा।
  • ऐरे डिबग जानकारी (XC8-3157) कंपाइलर द्वारा उत्पादित डिबग जानकारी __memx एड्रेस स्पेस में ऐरे के लिए ऑब्जेक्ट प्रकार को सटीक रूप से व्यक्त नहीं करती है। यह IDE में ऑब्जेक्ट के अवलोकन को रोक देगा।

कोड जनरेशन

  • सेक्शन-एंकर विकल्प के साथ सेगफॉल्ट (XC8-3045) प्रोग्राम जो चर तर्क सूचियों के साथ फ़ंक्शन को परिभाषित करता है और जो -fsection-anchors विकल्प का उपयोग करता है, उसने आंतरिक कंपाइलर त्रुटि को ट्रिगर किया हो सकता है: सेगमेंटेशन फॉल्ट
  • डिबग जानकारी सिंक से बाहर (XC8-2948) जब लिंकर विश्राम अनुकूलन निर्देशों को सिकोड़ता है (उदाहरण के लिएampले कॉल टू आरकॉल निर्देश), स्रोत लाइन से एड्रेस मैपिंग सिंक में नहीं रह सकती है जब एक सेक्शन में एक से अधिक सिकुड़न ऑपरेशन हो रहे हों। नीचे दिए गए उदाहरण मेंampले, फू के लिए दो कॉल हैं जो सापेक्ष कॉल के लिए आराम से समाप्त होते हैं।
  • PA मेमोरी आवंटन विफलता (XC8-2881) प्रक्रियात्मक अमूर्तन अनुकूलकों का उपयोग करते समय, लिंकर मेमोरी आवंटन त्रुटियों की रिपोर्ट कर सकता है जब कोड का आकार डिवाइस पर उपलब्ध प्रोग्राम मेमोरी की मात्रा के करीब होता है, भले ही प्रोग्राम उपलब्ध स्थान को फिट करने में सक्षम हो।
  • इतना स्मार्ट नहीं स्मार्ट-आईओ (XC8-2872) यदि const-data-in-progmem सुविधा को अक्षम कर दिया गया है या यदि डिवाइस ने अपने सभी फ़्लैश को डेटा मेमोरी में मैप किया है, तो कंपाइलर की स्मार्ट-आईओ सुविधा snprintf फ़ंक्शन के लिए वैध लेकिन उप-इष्टतम कोड उत्पन्न करेगी।
  • इससे भी कम स्मार्ट स्मार्ट-आईओ (XC8-2869) संकलक की स्मार्ट-आईओ सुविधा वैध लेकिन उप-इष्टतम कोड उत्पन्न करेगी जब -flto और -fno-builtin दोनों विकल्प उपयोग किए जाते हैं।
  • उप-इष्टतम रीड-ओनली डेटा प्लेसमेंट (XC8-2849) लिंकर वर्तमान में APPCODE और APPDATA मेमोरी सेक्शन के बारे में नहीं जानता है, न ही मेमोरी मैप में [No-]Read-While-Write डिवीजनों के बारे में। परिणामस्वरूप, इस बात की थोड़ी संभावना है कि लिंकर मेमोरी के अनुपयुक्त क्षेत्र में रीड-ओनली डेटा आवंटित कर सकता है। यदि const-data-in-progmem सुविधा सक्षम है, तो डेटा के गलत स्थान पर रखे जाने की संभावना बढ़ जाती है, खासकर यदि const-data-in-config-mapped-progmem सुविधा भी सक्षम है। यदि आवश्यक हो तो इन सुविधाओं को अक्षम किया जा सकता है।
  • ऑब्जेक्ट फ़ाइल प्रोसेसिंग ऑर्डर (XC8-2863) लिंकर द्वारा ऑब्जेक्ट फ़ाइलों को जिस क्रम में प्रोसेस किया जाएगा, वह प्रक्रियात्मक अमूर्त अनुकूलन (-mpa विकल्प) के उपयोग के आधार पर भिन्न हो सकता है। यह केवल उस कोड को प्रभावित करेगा जो कई मॉड्यूल में कमज़ोर फ़ंक्शन को परिभाषित करता है।
  • निरपेक्ष के साथ लिंकर त्रुटि (XC8-2777) जब किसी ऑब्जेक्ट को RAM के प्रारंभ में किसी पते पर निरपेक्ष बना दिया गया हो और अप्रारंभीकृत ऑब्जेक्ट भी परिभाषित कर दिए गए हों, तो लिंकर त्रुटि उत्पन्न हो सकती है।
  • लघु वेक-अप आईडी (XC8-2775) ATA5700/2 उपकरणों के लिए, PHID0/1 रजिस्टरों को 16 बिट्स की चौड़ाई के बजाय केवल 32 बिट्स की चौड़ाई के रूप में परिभाषित किया गया है।
  • प्रतीक को कॉल करते समय लिंकर क्रैश हो जाता है (XC8-2758) यदि स्रोत कोड द्वारा - Wl,–defsym लिंकर विकल्प का उपयोग करके परिभाषित किए गए प्रतीक को कॉल करते समय -mrelax ड्राइवर विकल्प का उपयोग किया जाता है, तो लिंकर क्रैश हो सकता है।
  • गलत आरंभीकरण (XC8-2679) कुछ वैश्विक/स्थिर बाइट-आकार वाले ऑब्जेक्ट्स के लिए आरंभिक मानों को डेटा मेमोरी में रखने तथा रनटाइम पर चरों तक पहुंचने के स्थान के बीच विसंगति होती है।
  • खराब अप्रत्यक्ष फ़ंक्शन कॉल (XC8-2628) कुछ उदाहरणों में, संरचना के भाग के रूप में संग्रहीत फ़ंक्शन पॉइंटर के माध्यम से किए गए फ़ंक्शन कॉल विफल हो सकते हैं।
  • strtof हेक्साडेसिमल फ्लोट्स के लिए शून्य लौटाता है (XC8-2626) लाइब्रेरी फ़ंक्शन strtof() et al और scanf() et al, हमेशा एक हेक्साडेसिमल फ्लोटिंग-पॉइंट संख्या को परिवर्तित करेगा जो घातांक को शून्य में निर्दिष्ट नहीं करता है। उदाहरण के लिएample: strtof(“0x1”, &endptr); मान 0 लौटाएगा, 1 नहीं।
  • गलत स्टैक सलाहकार संदेश (XC8-2542, XC8-2541) कुछ उदाहरणों में, पुनरावृत्ति या अनिर्धारित स्टैक के संबंध में स्टैक सलाहकार चेतावनी (संभवतः alloca() के उपयोग के माध्यम से) उत्सर्जित नहीं होती है।
  • डुप्लिकेट इंटरप्ट कोड के साथ विफलता (XC8-2421) जहाँ एक से अधिक इंटरप्ट फ़ंक्शन का बॉडी एक जैसा होता है, वहाँ कंपाइलर के पास एक इंटरप्ट फ़ंक्शन कॉल के लिए आउटपुट दूसरे को हो सकता है। इसके परिणामस्वरूप सभी कॉल-क्लॉबर्ड रजिस्टर अनावश्यक रूप से सहेजे जाएँगे, और इंटरप्ट वर्तमान इंटरप्ट हैंडलर के उपसंहार के चलने से पहले ही सक्षम हो जाएँगे, जिससे कोड विफलता हो सकती है।
  • अमान्य DFP पथ के साथ खराब आउटपुट (XC8-2376) यदि कंपाइलर को अमान्य DFP पथ के साथ बुलाया जाता है और चयनित डिवाइस के लिए 'spec' फ़ाइल मौजूद है, तो कंपाइलर गुम डिवाइस फ़ैमिली पैक की रिपोर्ट नहीं कर रहा है और इसके बजाय 'spec' फ़ाइल का चयन कर रहा है, जो तब अमान्य आउटपुट की ओर ले जा सकता है। 'spec' फ़ाइलें वितरित DFP के साथ अद्यतित नहीं हो सकती हैं और केवल आंतरिक कंपाइलर परीक्षण के साथ उपयोग के लिए अभिप्रेत थीं।
  • मेमोरी ओवरलैप का पता नहीं चल पाता (XC8-1966) संकलक किसी पते पर निरपेक्ष बनाए गए ऑब्जेक्ट्स (__at() के माध्यम से) तथा __section() विनिर्देशक का उपयोग करने वाले अन्य ऑब्जेक्ट्स, जो समान पते से जुड़े हुए हैं, के मेमोरी ओवरलैप का पता नहीं लगा पाता।
  • लाइब्रेरी फ़ंक्शन और __memx (XC8-1763) के साथ विफलता __memx एड्रेस स्पेस में तर्क के साथ libgcc फ़्लोट फ़ंक्शन विफल हो सकते हैं। ध्यान दें कि लाइब्रेरी रूटीन को कुछ C ऑपरेटर से कॉल किया जाता है, इसलिए, उदाहरण के लिएample, निम्न कोड प्रभावित होता है: रिटर्न regFloatVar > memxFloatVar;
  • सीमित libgcc कार्यान्वयन (AVRTC-731) ATTiny4/5/9/10/20/40 उत्पादों के लिए, libgcc में मानक C / गणित लाइब्रेरी कार्यान्वयन बहुत सीमित है या मौजूद नहीं है।
  • प्रोग्राम मेमोरी सीमाएं (AVRTC-732) 128 kb से अधिक की प्रोग्राम मेमोरी छवियां टूलचेन द्वारा समर्थित हैं; हालांकि, -mrelax विकल्प का उपयोग करने पर आवश्यक फ़ंक्शन स्टब्स उत्पन्न करने के बजाय, बिना किसी छूट और सहायक त्रुटि संदेश के लिंकर निरस्तीकरण के ज्ञात उदाहरण हैं।
  • नाम स्थान सीमाएँ (AVRTC-733) नामित पता स्थान टूलचेन द्वारा समर्थित हैं, जो उपयोगकर्ता गाइड अनुभाग विशेष प्रकार क्वालीफायर में उल्लिखित सीमाओं के अधीन हैं।
  • समय क्षेत्र लाइब्रेरी फ़ंक्शन GMT को मानते हैं और स्थानीय समय क्षेत्रों का समर्थन नहीं करते हैं, इस प्रकार localtime() gmtime() के समान समय लौटाएगा, उदाहरण के लिएampले.

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

AVR MCU के लिए माइक्रोचिप XC8 C कंपाइलर संस्करण 2.45 रिलीज़ नोट्स [पीडीएफ] निर्देश
AVR MCU, XC8 C, XC8 C कंपाइलर संस्करण 2.45 AVR MCU के लिए रिलीज़ नोट्स, कंपाइलर संस्करण 2.45 AVR MCU के लिए रिलीज़ नोट्स, संस्करण 2.45 AVR MCU के लिए रिलीज़ नोट्स, AVR MCU के लिए रिलीज़ नोट्स, AVR MCU के लिए नोट्स, AVR MCU

संदर्भ

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

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