MPLAB XC8 C कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स
वापरकर्ता मार्गदर्शक
या दस्तऐवजात MPLAB XC8 C कंपायलरशी संबंधित महत्त्वाची माहिती मायक्रोचिप AVR डिव्हाइसेसना लक्ष्यित करताना आहे. कृपया हे सॉफ्टवेअर चालवण्यापूर्वी ते वाचा.
तुम्ही 8-बिट PIC डिव्हाइसेससाठी कंपायलर वापरत असल्यास PIC डॉक्युमेंटसाठी MPLAB XC8 C कंपायलर रिलीझ नोट्स पहा.
ओव्हरview
1.1. परिचय
Microchip MPLAB® XC8 C कंपाइलरचे हे प्रकाशन एक कार्यशील सुरक्षा कंपाइलर आहे, जे या कंपाइलरच्या v2.36 रिलीझवर आधारित आहे आणि जे आता नेटवर्क सर्व्हर परवान्यास समर्थन देते.
१.२. प्रकाशन तारीख
या कंपाइलर आवृत्तीची अधिकृत प्रकाशन तारीख 27 जानेवारी 2022 आहे.
१.३. मागील आवृत्ती
मागील MPLAB XC8 C कंपाइलर आवृत्ती 2.36 होती, 25 जानेवारी 2022 रोजी प्रसिद्ध झाली.
१.४. फंक्शनल सेफ्टी मॅन्युअल
MPLAB XC कंपाइलर्ससाठी कार्यात्मक सुरक्षा पुस्तिका दस्तऐवजीकरण पॅकेजमध्ये उपलब्ध असते जेव्हा तुम्ही कार्यात्मक सुरक्षा परवाना खरेदी करता.
1.5. घटक परवाने आणि आवृत्त्या® हे MPLAB
AVR MCUs टूल्ससाठी XC8 C कंपाइलर हे GNU जनरल पब्लिक लायसन्स (GPL) अंतर्गत लिहिलेले आणि वितरित केले जाते याचा अर्थ त्याचा स्त्रोत कोड मुक्तपणे वितरित केला जातो आणि लोकांसाठी उपलब्ध आहे.
GNU GPL अंतर्गत साधनांचा स्त्रोत कोड मायक्रोचिपमधून स्वतंत्रपणे डाउनलोड केला जाऊ शकतो webजागा. तुमच्या इंस्टॉल लायसेंस.txt avr/doc डिरेक्ट्रीच्या उपडिरेक्ट्रीवर नाव असलेल्या फाईलमध्ये तुम्ही GNU GPL वाचू शकता. GPL अंतर्गत तत्त्वांची सामान्य चर्चा येथे आढळू शकते.
हेडर फाइल्स, लिंकर स्क्रिप्ट्स आणि रनटाइम लायब्ररीसाठी दिलेला सपोर्ट कोड हा प्रोप्रायटरी कोड आहे आणि GPL अंतर्गत समाविष्ट नाही.
हा कंपाइलर GCC आवृत्ती 5.4.0, binutils आवृत्ती 2.26 ची अंमलबजावणी आहे आणि avr-libc आवृत्ती 2.0.0 वापरतो.
1.6. सिस्टम आवश्यकता
MPLAB XC8 C कंपाइलर आणि ते वापरत असलेले परवाना सॉफ्टवेअर विविध ऑपरेटिंग सिस्टीमसाठी उपलब्ध आहेत, ज्यात खालील 64-बिट आवृत्त्यांचा समावेश आहे: Microsoft Windows 10 च्या व्यावसायिक आवृत्त्या; उबंटू 18.04; आणि macOS 10.15.5. Windows साठी बायनरी कोड-साइन केले आहेत. MacOS साठी बायनरी कोड-साइन आणि नोटरीकृत केल्या आहेत.
जर तुम्ही नेटवर्क परवाना सर्व्हर चालवत असाल, तर परवाना सर्व्हर होस्ट करण्यासाठी कंपाइलर्सद्वारे समर्थित ऑपरेटिंग सिस्टम असलेले संगणकच वापरले जाऊ शकतात. xclm आवृत्ती 2.0 नुसार, नेटवर्क परवाना सर्व्हर मायक्रोसॉफ्ट विंडोज सर्व्हर प्लॅटफॉर्मवर स्थापित केला जाऊ शकतो, परंतु परवाना सर्व्हरला ऑपरेटिंग सिस्टमच्या सर्व्हर आवृत्तीवर चालण्याची आवश्यकता नाही.
१.७. उपकरणे समर्थित
हा कंपाइलर रिलीजच्या वेळी ज्ञात असलेल्या सर्व 8-बिट AVR MCU उपकरणांना समर्थन देतो. पहा (कम्पायलरमध्ये avr_chipinfo.html निर्देशिका) सर्व समर्थित उपकरणांच्या सूचीसाठी. या फायली प्रत्येक उपकरणासाठी कॉन्फिगरेशन बिट डॉक सेटिंग्ज देखील सूचीबद्ध करतात.
१.७. आवृत्त्या आणि परवाना अपग्रेड
MPLAB XC8 कंपाइलर परवानाकृत (PRO) किंवा विनापरवाना (विनामूल्य) उत्पादन म्हणून सक्रिय केले जाऊ शकते. तुमच्या कंपाइलरला परवाना देण्यासाठी तुम्हाला एक सक्रियकरण की खरेदी करणे आवश्यक आहे. मोफत उत्पादनाच्या तुलनेत परवाना उच्च पातळीच्या ऑप्टिमायझेशनसाठी परवानगी देतो. परवाना नसलेला कंपाइलर परवान्याशिवाय अनिश्चित काळासाठी ऑपरेट केला जाऊ शकतो.
MPLAB XC8 फंक्शनल सेफ्टी कंपाइलर मायक्रोचिपकडून खरेदी केलेल्या फंक्शनल सेफ्टी लायसन्ससह सक्रिय करणे आवश्यक आहे. या परवान्याशिवाय कंपाइलर काम करणार नाही. एकदा सक्रिय झाल्यावर, तुम्ही कोणतीही ऑप्टिमायझेशन पातळी निवडू शकता आणि सर्व कंपाइलर वैशिष्ट्ये वापरू शकता. MPLAB XC कार्यात्मक सुरक्षिततेचे हे प्रकाशन
कंपाइलर नेटवर्क सर्व्हर परवान्यास समर्थन देतो.
परवाना प्रकार आणि परवान्यासह कंपाइलरच्या स्थापनेबद्दल माहितीसाठी MPLAB XC C Compilers (DS50002059) स्थापित करणे आणि परवाना देणे दस्तऐवज पहा.
1.9. स्थापना आणि सक्रियकरण
या कंपाइलरमध्ये समाविष्ट केलेल्या नवीनतम परवाना व्यवस्थापकाबद्दल महत्त्वाच्या माहितीसाठी स्थलांतर समस्या आणि मर्यादा विभाग देखील पहा.
MPLAB IDE वापरत असल्यास, हे टूल इंस्टॉल करण्यापूर्वी MPLAB X IDE ची नवीनतम आवृत्ती 5.0 किंवा नंतरची स्थापित केल्याची खात्री करा. कंपाइलर स्थापित करण्यापूर्वी IDE सोडा. (Windows), (Linux) किंवा (macOS) .exe .run .app कंपाइलर इंस्टॉलर ऍप्लिकेशन चालवा, उदा आणि स्क्रीनवरील दिशानिर्देशांचे अनुसरण करा.
XC8-1.00.11403-windows.exe
डीफॉल्ट स्थापना निर्देशिकेची शिफारस केली जाते. जर तुम्ही लिनक्स वापरत असाल, तर तुम्ही टर्मिनल वापरून आणि रूट खात्यातून कंपाइलर इंस्टॉल केले पाहिजे. प्रशासक विशेषाधिकारांसह macOS खाते वापरून स्थापित करा.
सक्रियकरण आता इंस्टॉलेशनसाठी स्वतंत्रपणे केले जाते. अधिक माहितीसाठी MPLAB® XC C Compilers (DS52059) साठी दस्तऐवज परवाना व्यवस्थापक पहा.
तुम्ही मूल्यमापन परवान्याअंतर्गत कंपाइलर चालवणे निवडल्यास, तुमचा मूल्यमापन कालावधी संपल्यानंतर 14 दिवसांच्या आत तुम्हाला संकलनादरम्यान एक चेतावणी मिळेल. तुम्ही तुमची HPA सदस्यता संपल्यापासून 14 दिवसांच्या आत असाल तर हीच चेतावणी जारी केली जाते.
XC नेटवर्क परवाना सर्व्हर हा एक वेगळा इंस्टॉलर आहे आणि एकल-वापरकर्ता कंपाइलर इंस्टॉलरमध्ये समाविष्ट केलेला नाही.
XC परवाना व्यवस्थापक आता फ्लोटिंग नेटवर्क परवान्यांच्या रोमिंगला सपोर्ट करतो. मोबाईल वापरकर्त्यांना उद्देशून, हे वैशिष्ट्य फ्लोटिंग लायसन्सला कमी कालावधीसाठी नेटवर्क बंद करण्यास अनुमती देते. हे वैशिष्ट्य वापरून, तुम्ही नेटवर्कवरून डिस्कनेक्ट करू शकता आणि तरीही तुमचा MPLAB XC कंपाइलर वापरू शकता. या वैशिष्ट्याबद्दल अधिक माहितीसाठी XCLM install चे डॉक फोल्डर पहा.
MPLAB X IDE मध्ये रोमिंग व्यवस्थापित करण्यासाठी परवाना विंडो (साधने > परवाने) समाविष्ट आहे.
१.८.१. स्थापना समस्यांचे निराकरण करणे
तुम्हाला कोणत्याही Windows ऑपरेटिंग सिस्टिममध्ये कंपाइलर इन्स्टॉल करताना अडचणी येत असल्यास, खालील सूचना वापरून पहा.
- प्रशासक म्हणून स्थापना चालवा.
- इंस्टॉलर ऍप्लिकेशनच्या परवानग्या 'पूर्ण नियंत्रण' वर सेट करा. (फाइलवर उजवे-क्लिक करा, गुणधर्म निवडा, सुरक्षा टॅब, वापरकर्ता निवडा, संपादित करा.)
- टेम्प फोल्डरच्या परवानग्या "फुल कंट्रोल" वर सेट करा.
- टेंप फोल्डरचे स्थान निश्चित करण्यासाठी, रन कमांडमध्ये टाइप करा (विंडोज लोगो की + आर). %temp% हे फाइल एक्सप्लोरर डायलॉग उघडेल जो ती निर्देशिका दर्शवेल आणि तुम्हाला त्या फोल्डरचा मार्ग निर्धारित करण्यास अनुमती देईल.
१.९. कंपाइलर दस्तऐवजीकरण
स्क्रीनशॉटमध्ये दर्शविल्याप्रमाणे MPLAB X IDE डॅशबोर्डमधील निळ्या हेल्प बटणावर क्लिक केल्यावर आपल्या ब्राउझरमध्ये उघडणाऱ्या HTML पृष्ठावरून कंपाइलरचे वापरकर्ता मार्गदर्शक उघडले जाऊ शकतात.
तुम्ही 8-बिट AVR लक्ष्यांसाठी तयार करत असल्यास, AVR साठी MPLAB® XC8 C कंपाइलर यूजर्स® मार्गदर्शक
MCU मध्ये त्या कंपाइलर पर्यायांची आणि या आर्किटेक्चरला लागू असलेल्या वैशिष्ट्यांची माहिती असते.
1.11. ग्राहक समर्थन
मायक्रोचिप या कंपाइलर आवृत्तीबाबत बग अहवाल, सूचना किंवा टिप्पण्यांचे स्वागत करते. कृपया कोणतेही बग अहवाल किंवा वैशिष्ट्य विनंत्या सपोर्ट सिस्टमद्वारे निर्देशित करा.
दस्तऐवजीकरण अद्यतने
MPLAB XC8 दस्तऐवजीकरणाच्या ऑनलाइन आणि अद्ययावत आवृत्त्यांसाठी, कृपया मायक्रोचिपच्या ऑनलाइन भेट द्या
तांत्रिक दस्तऐवजीकरण webसाइट
या प्रकाशनात नवीन किंवा अद्यतनित AVR दस्तऐवजीकरण:
MPLAB® XC C Compilers (DS50002059) पुनरावृत्ती L स्थापित करणे आणि परवाना देणे
मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शक मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररीद्वारे परिभाषित केलेल्या फंक्शन्सच्या वर्तनाचे आणि इंटरफेसचे वर्णन करते, तसेच लायब्ररी प्रकार आणि मॅक्रोचा हेतू वापरतात. यापैकी काही माहिती पूर्वी AVR साठी MPLA® XC8 C कंपाइलर वापरकर्त्याच्या मार्गदर्शकामध्ये समाविष्ट होती.
MCU. डिव्हाइस-विशिष्ट लायब्ररी माहिती अद्याप या कंपाइलर मार्गदर्शकामध्ये समाविष्ट आहे.
हेक्समेट वापरकर्ता मार्गदर्शक या प्रकाशनातील निर्देशिकेत समाविष्ट केले आहे. हे मार्गदर्शक हेक्समेट एक स्वतंत्र अनुप्रयोग म्हणून चालवणाऱ्या डॉक्ससाठी आहे.
खालील विभाग कंपाइलरसह पाठवलेल्या वापरकर्त्याच्या मार्गदर्शकांमध्ये आढळलेल्या सुधारणा आणि अतिरिक्त माहिती प्रदान करतात.
२.१. smart-io-format पर्याय
The-msmart-io-format=fmt fmt पर्याय, जेथे स्वरूपित IO रूपांतरण तपशील असलेली एक स्ट्रिंग आहे, कंपाइलरला सूचित करते की सूचीबद्ध तपशील स्मार्ट IO फंक्शन्सद्वारे वापरले जातात.
कोडचा आकार कमी करण्यासाठी, कंपाइलर या फंक्शन्सच्या सर्व कॉल्समध्ये एकत्रित केलेल्या फॉरमॅट स्ट्रिंग्समध्ये उपस्थित असलेल्या रूपांतरण तपशीलांवर आधारित, स्मार्ट IO फंक्शन्सच्या प्रिंट आणि स्कॅन फॅमिलीशी संबंधित लायब्ररी कोड सानुकूलित करतो. हे वैशिष्ट्य पूर्णपणे स्वयंचलित आहे आणि ते अक्षम केले जाऊ शकत नाही.
काही परिस्थितींमध्ये, कंपाइलर फॉरमॅट केलेल्या IO फंक्शन कॉलमधून वापर माहिती निर्धारित करण्यात अक्षम आहे. जर पर्याय वापरला गेला असेल तर, या फंक्शन्ससाठी आवश्यक रूपांतरण तपशील स्ट्रिंगमधून प्राप्त केले जातात; अन्यथा, कंपायलर -msmart-io-format=fmt fmt फंक्शन्स कसे वापरले जातात याबद्दल कोणतीही गृहीत धरत नाही आणि हे सुनिश्चित करतो की पूर्णतः कार्यशील स्वरूपित IO फंक्शन्स अंतिम प्रोग्राम इमेजमध्ये जोडलेले आहेत.
उदाampले, स्मार्ट IO फंक्शन्ससाठी खालील कॉल्सचा विचार करा.
vscanf(“%d:%li”, va_list1);
vprintf(“%-s%d”, va_list2);
vprintf(fmt1, va_list3);// अस्पष्ट वापर
vscanf(fmt2, va_list4);// अस्पष्ट वापर
शेवटच्या दोन कॉल्सवर प्रक्रिया करताना, कंपाइलर फॉरमॅट स्ट्रिंग्स किंवा आर्ग्युमेंट्समधून कोणतीही वापर माहिती काढू शकत नाही. या उदाहरणांमध्ये, -msmart-io-format पर्याय वापरला जाऊ शकतो आणि संभाव्यतः अधिक इष्टतम स्वरूपित I0 फंक्शन्स व्युत्पन्न करण्यास अनुमती देईल, त्यामुळे प्रोग्रामचा कोड आकार कमी होईल. उदाample, जर fmtl आणि fmt2 द्वारे निर्देशित केलेल्या फॉरमॅट स्ट्रिंग्स एकत्रितपणे फक्त “%d”, “%i” आणि “%s” रूपांतरण स्पेसिफायर वापरत असतील तर, -msmart-io-format=fmt=”%d%i%s ” पर्याय जारी केला पाहिजे.
टिंट स्ट्रिंगमध्ये ध्वज आणि सुधारकांसह कोणतेही वैध रूपांतरण तपशील असू शकतात (उदा.ample “%-13. 91s”), आणि फंक्शन्स ज्यांचा वापर संदिग्ध आहे ते नेमके प्रतिबिंबित केले पाहिजे. मध्ये तपशील समाविष्ट करण्यात अयशस्वी बिट फॉरमॅट केलेल्या I0 फंक्शन्स द्वारे वापरले गेलेले युक्तिवाद कोड अयशस्वी होऊ शकतो.
जर fmt एक रिकामी स्ट्रिंग असेल किंवा त्यामध्ये कोणतेही समजण्यायोग्य रूपांतरण तपशील नसतील, तर एक चेतावणी जारी केली जाईल आणि पूर्णतः कार्यशील स्वरूपित I0 फंक्शन्स अंतिम प्रोग्राम इमेजमध्ये जोडली जातील.
कमांड लाइनवर हा पर्याय अनेक वेळा वापरला जाऊ शकतो. प्रत्येक पर्यायासह वापरलेली रूपांतरण वैशिष्ट्ये जमा केली जातात.
२.२. वगळणे-फ्रेम-पॉइंटर पर्याय
– f वगळा- फ्रेम-पॉइंटर पर्याय कंपायलरला स्टॅकवरील ऑब्जेक्ट्स ऍक्सेस करण्यासाठी स्टॅक पॉइंटर थेट वापरण्याची सूचना देतो आणि शक्य असल्यास, फ्रेम रजिस्टर सेव्ह, इनिशियलाइज आणि रिस्टोअर करणारा कोड वगळतो. हे सर्व गैर-शून्य ऑप्टिमायझेशन स्तरांवर स्वयंचलितपणे सक्षम केले जाते.
पर्याय नाकारणे, -fno-omit-फ्रेम-पॉइंटर वापरणे, ऑप्टिमाइझ केलेले कोड डीबग करण्यात मदत करू शकते; तथापि, हा पर्याय फ्रेम पॉइंटर नेहमी वापरला जाईल याची हमी देत नाही.
२.३. unroll-loops पर्याय
– फनरोल आय-लूप आणि -(अनरोल-ऑल-लूप पर्याय स्पीड-ओरिएंटेड ऑप्टिमायझेशन नियंत्रित करतात जे लूपमधील ब्रँचिंग विलंब दूर करण्याचा प्रयत्न करतात. अनरोल केलेले लूप सामान्यत: मोठ्या कोड आकाराच्या खर्चावर व्युत्पन्न केलेल्या कोडच्या अंमलबजावणीचा वेग वाढवतात.
– funrol I-loops पर्याय लूप अनरोल करतो जेथे पुनरावृत्तीची संख्या कंपाइल वेळी किंवा कोड लूपमध्ये प्रवेश केल्यावर निर्धारित केली जाऊ शकते. -फनरोल-ऑल-लूप्स पर्याय अधिक आक्रमक आहे, पुनरावृत्तीची संख्या अज्ञात असतानाही, सर्व लूप अनरोल करते. फनरोल 1-लूप पर्यायापेक्षा अंमलबजावणीचा वेग सुधारण्यासाठी हे सामान्यत: कमी प्रभावी आहे.
२.४. fat-Ito-वस्तू पर्याय
– f fat-1 to-obj ects पर्याय कंपाइलरने फॅट ऑब्जेक्ट तयार करण्याची विनंती करतो files, ज्यामध्ये दोन्ही असतात
ऑब्जेक्ट कोड आणि GIMPLE (GCC च्या अंतर्गत प्रतिनिधित्वांपैकी एक), अद्वितीय ELF विभागांना लिहिलेले. अशा वस्तू files हे लायब्ररी कोडसाठी उपयुक्त आहेत जे प्रकल्पांशी जोडले जाऊ शकतात जे मानक लिंक-टाइम ऑप्टिमायझर वापरतात आणि वापरत नाहीत, -flto पर्यायाद्वारे नियंत्रित केले जातात.
या पर्यायाचा – fno-fat-lto-objects फॉर्म, जो कोणताही पर्याय निर्दिष्ट न केल्यास डीफॉल्ट असतो, ऑब्जेक्टमध्ये ऑब्जेक्ट कोडचा समावेश दाबतो files, परिणामी जलद बिल्ड होते. तथापि, अशा वस्तु files नेहमी मानक लिंक-टाइम ऑप्टिमायझर वापरून लिंक केले पाहिजे.
2.5. इटो-विभाजन पर्याय
- flto-partiti on=a Igo ri thm पर्याय ऑब्जेक्टचे विभाजन करण्यासाठी वापरलेला अल्गोरिदम नियंत्रित करतो files लिंक-टाइम ऑप्टिमायझर चालवताना. कोणताही युक्तिवाद संपूर्णपणे विभाजन अक्षम करत नाही आणि संपूर्ण प्रोग्राम विश्लेषण (WPA) टप्प्यातून थेट लिंक-टाइम ऑप्टिमायझेशन चरण कार्यान्वित करतो. मोठ्या कंपाइलर मेमरी आवश्यकता आणि जास्त बिल्ड वेळेच्या खर्चावर, ऑपरेशनची ही पद्धत सर्वात इष्टतम परिणाम देईल, जरी लहान प्रोग्राम्समध्ये ही समस्या असण्याची शक्यता नाही. ऑब्जेक्टचे विभाजन करणे files बिल्ड कामगिरी सुधारू शकते. युक्तिवाद एक निर्दिष्ट करतो की नेमके एक विभाजन वापरले जावे आणि lto1 वितर्क विभाजन निर्दिष्ट करते जे मूळ स्त्रोताद्वारे निर्देशित केलेले मिरर files पूर्वनिर्धारित युक्तिवाद संतुलित आहे, जे शक्य असेल तेव्हा समान आकाराच्या भागांमध्ये विभाजन निर्दिष्ट करते.
२.६. विभाग 2.6 मॅप केलेले लिंकर पर्याय
-wl, -विभाग-प्रारंभ =से tion = addr सामान्यतः वापरल्या जाणार्या लिंकर पर्यायांच्या टेबलमधून गहाळ आहे, -wl कंपाइलर ड्रायव्हर पर्याय वापरून प्रवेश करता येतो. हा पर्याय निर्दिष्ट पत्त्यावर सानुकूल-नावाचे विभाग ठेवण्याची परवानगी देतो. हे मानक विभाग ठेवण्यासाठी वापरले जाऊ शकत नाही, जसे की (. डेटा, . bss, . मजकूर), जो -wl, -'r पर्याय वापरून ठेवला पाहिजे.
२.७. कलम 2.7 मध्ये सुधारणा करणे आणि वाटप केलेले विभाग जोडणे
लक्षात घ्या की वापरकर्त्याच्या मार्गदर्शकाच्या या विभागात समाविष्ट असलेल्या माहितीच्या विरूद्ध, या प्रकाशनातील कंपाइलरमध्ये केलेल्या बदलांचा अर्थ असा आहे की सानुकूल विभाग -w1 वापरून जोडले जाऊ शकतात, - पंथ आयन- start=section=acicir पर्याय आणि लिंकर स्क्रिप्टमध्ये बदल न करता.
नवीन काय आहे
खालील am नवीन AVR-लक्ष्य वैशिष्ट्ये कंपाइलर आता समर्थन देत आहे. उपशीर्षकांमधील आवृत्ती क्रमांक खालील वैशिष्ट्यांना समर्थन देण्यासाठी प्रथम कंपायलर आवृत्ती सूचित करते.
३.३. आवृत्ती 3.1 (कार्यात्मक सुरक्षा प्रकाशन)
नेटवर्क सर्व्हर परवाना MPLAB XC8 फंक्शनल सेफ्टी कंपाइलरचे हे प्रकाशन नेटवर्क सर्व्हर परवान्यास समर्थन देते.
३.१. आवृत्ती 3.2
काहीही नाही.
३.१. आवृत्ती 3.3
नवीन उपकरण समर्थन खालील AVR भागांसाठी उपलब्ध आहे: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 आणि AVR64DD32.
सुधारित संदर्भ स्विचिंग नवीन -mcall-isr-prologues पर्याय इंटरप्ट फंक्शन्स एंट्रीवर रजिस्टर्स कसे सेव्ह करतात आणि इंटरप्ट रूटीन संपल्यावर ती रजिस्टर्स कशी रिस्टोअर केली जातात हे बदलते. हे -mcall-prologues पर्यायाप्रमाणेच कार्य करते, परंतु केवळ इंटरप्ट फंक्शन्स (ISRs) प्रभावित करते.
आणखी सुधारित संदर्भ स्विचिंग नवीन -mgas-isr-प्रस्तावना पर्याय लहान व्यत्यय सेवा दिनचर्यासाठी व्युत्पन्न केलेला संदर्भ स्विच कोड नियंत्रित करतो. सक्षम केल्यावर, हे वैशिष्ट्य असेंबलरकडे नोंदणीच्या वापरासाठी ISR स्कॅन करेल आणि आवश्यक असल्यासच ही वापरलेली नोंदणी जतन करेल.
कॉन्फिगर करण्यायोग्य फ्लॅश मॅपिंग AVR DA आणि AVR DB फॅमिलीमधील काही उपकरणांमध्ये SFR (उदा. FLMAP) असते जे प्रोग्राम मेमरीचा कोणता 32k विभाग डेटा मेमरीमध्ये मॅप केला जाईल हे निर्दिष्ट करते. नवीन – mconst-data-in-config-mapped-progmem पर्यायाचा वापर लिंकरला सर्व बाधक टी-पात्र डेटा एका 32k विभागात ठेवण्यासाठी केला जाऊ शकतो आणि हा डेटा डेटामध्ये मॅप केला गेला आहे याची खात्री करण्यासाठी आपोआप संबंधित SFR रजिस्टर सुरू करू शकतो. मेमरी स्पेस, जिथे ते अधिक प्रभावीपणे प्रवेश केले जाईल.
मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सर्व MPLAB XC कंपाइलर मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी सामायिक करतील, जी आता MPLAB XC8 च्या या प्रकाशनासह उपलब्ध आहे. द MPLAB® XC8 C कंपाइलर
AVR साठी वापरकर्ता मार्गदर्शक® MCU यापुढे या मानक कार्यांसाठी दस्तऐवजीकरण समाविष्ट नाही. ही माहिती आता मध्ये आढळू शकते मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररी संदर्भ मार्गदर्शक. लक्षात घ्या की avr-libc द्वारे पूर्वी परिभाषित केलेली काही कार्यक्षमता यापुढे उपलब्ध नाही. (पहा लायब्ररी कार्यक्षमता.)
स्मार्ट I0 नवीन युनिफाइड लायब्ररींचा भाग म्हणून, प्रिंटफ आणि स्कॅनफ फॅमिलीमधील JO फंक्शन्स आता प्रत्येक बिल्डवर सानुकूल-व्युत्पन्न केली जातात, ही फंक्शन्स प्रोग्राममध्ये कशी वापरली जातात यावर आधारित. हे प्रोग्रामद्वारे वापरलेली संसाधने लक्षणीयरीत्या कमी करू शकते.
स्मार्ट I0 सहाय्य पर्याय स्मार्ट I0 फंक्शन्ससाठी कॉलचे विश्लेषण करताना (जसे की printf () किंवा scanf ()), कंपायलर नेहमी फॉरमॅट स्ट्रिंगवरून निर्धारित करू शकत नाही किंवा कॉलसाठी आवश्यक त्या रूपांतरण स्पेसिफायर्सच्या वितर्कांमधून अनुमान काढू शकत नाही. पूर्वी, कंपायलर नेहमी कोणतेही गृहितक करत नाही आणि पूर्णतः कार्यशील 10 फंक्शन्स अंतिम प्रोग्राम इमेजमध्ये जोडलेले असल्याची खात्री करत असे. एक नवीन – msma rt-io- format=fmt पर्याय जोडला गेला आहे जेणेकरून कंपाइलरला त्याऐवजी वापरकर्त्याद्वारे स्मार्ट I0 फंक्शन्सद्वारे वापरल्या जाणार्या रूपांतरण स्पेसिफायरची माहिती दिली जाऊ शकते ज्याचा वापर संदिग्ध आहे, जास्त लांब 10 दिनचर्या लिंक होण्यापासून प्रतिबंधित करते. (पहा smart-io-format अधिक तपशीलांसाठी पर्याय.)
सानुकूल विभाग ठेवणे याआधी, -W1, -section-start पर्यायाने विनंती केलेल्या पत्त्यावर फक्त निर्दिष्ट विभाग ठेवला होता जेव्हा लिंकर स्क्रिप्टने समान नावाचा आउटपुट विभाग परिभाषित केला होता. जेव्हा तसे झाले नाही, तेव्हा विभाग लिंकरने निवडलेल्या पत्त्यावर ठेवला गेला आणि पर्यायाकडे दुर्लक्ष केले गेले. आता पर्याय सर्व सानुकूल विभागांसाठी सन्मानित केला जाईल, जरी लिंकर स्क्रिप्टने विभाग परिभाषित केला नाही. लक्षात ठेवा, तथापि, मानक विभागांसाठी, जसे की . मजकूर, . bss किंवा डेटा, सर्वोत्कृष्ट तंदुरुस्त वाटपकर्त्याचे अजूनही त्यांच्या प्लेसमेंटवर पूर्ण नियंत्रण असेल आणि पर्यायाचा कोणताही परिणाम होणार नाही. -wl वापरा, -विभाग = addr पर्याय, वापरकर्त्याच्या मार्गदर्शकामध्ये वर्णन केल्याप्रमाणे.
३.१. आवृत्ती 3.4
स्टॅक मार्गदर्शन PRO कंपाइलर परवान्यासह उपलब्ध, कंपाइलरच्या स्टॅक मार्गदर्शन वैशिष्ट्याचा वापर प्रोग्रामद्वारे वापरल्या जाणार्या कोणत्याही स्टॅकच्या कमाल खोलीचा अंदाज घेण्यासाठी केला जाऊ शकतो. हे प्रोग्रामचा कॉल आलेख तयार करते आणि त्याचे विश्लेषण करते, प्रत्येक फंक्शनचा स्टॅक वापर निर्धारित करते आणि एक अहवाल तयार करते, ज्यावरून प्रोग्रामद्वारे वापरलेल्या स्टॅकच्या खोलीचा अंदाज लावला जाऊ शकतो.
हे वैशिष्ट्य -mchp-stack- use कमांड-लाइन पर्यायाद्वारे सक्षम केले आहे. अंमलबजावणीनंतर स्टॅक वापराचा सारांश छापला जातो. नकाशामध्ये तपशीलवार स्टॅक अहवाल उपलब्ध आहे file, ज्याची नेहमीच्या पद्धतीने विनंती केली जाऊ शकते.
नवीन डिव्हाइस समर्थन खालील AVR भागांसाठी उपलब्ध आहे: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTNY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32BR28, AVR64 , आणि AVR32DB32.
मागे घेतलेले उपकरण समर्थन पुढील AVR भागांसाठी आता उपलब्ध नाही: AVR 16DA28, AVR16DA32 आणि, AVR16DA48.
४.४. आवृत्ती 3.5 काहीही नाही.
३.१. आवृत्ती 3.6
डेटा इनिशिएलायझेशन रोखण्यासाठी नवीन पर्याय नवीन -mno-data-init ड्रायव्हर पर्याय डेटाचे इनिशिएलायझेशन आणि bss विभाग साफ करणे प्रतिबंधित करतो. हे असेंब्लीमध्ये do_copy_data आणि do_clear_bss चिन्हांचे आउटपुट दाबून कार्य करते files, ज्यामुळे लिंकरद्वारे त्या नित्यक्रमांचा समावेश टाळता येईल.
वर्धित ऑप्टिमायझेशन्स अनेक ऑप्टिमायझेशन सुधारणा केल्या गेल्या आहेत, ज्यामध्ये रिडंडंट रिटर्न सूचना काढून टाकणे, स्किप-इफ-बिट-इज सूचनेनंतर काही उडी काढून टाकणे, आणि सुधारित प्रक्रियात्मक अमूर्तता आणि ही प्रक्रिया पुनरावृत्ती करण्याची क्षमता समाविष्ट आहे.
यापैकी काही ऑप्टिमायझेशन नियंत्रित करण्यासाठी अतिरिक्त पर्याय उपलब्ध आहेत, विशेषत: -fsection-anchors, जे एका चिन्हाच्या सापेक्ष स्थिर वस्तूंचा प्रवेश करण्यास अनुमती देतात; -mpa-पुनरावृत्ती =n, जे डीफॉल्ट 2 पासून प्रक्रियात्मक अमूर्त पुनरावृत्तीची संख्या बदलण्याची परवानगी देते; आणि, -mpa-callcost-shortcal 1, जे अधिक आक्रमक प्रक्रियात्मक अॅब्स्ट्रॅक्शन करते, या आशेने की लिंकर लांब कॉल्स आराम करू शकेल. जर अंतर्निहित गृहीतके पूर्ण झाली नाहीत तर हा शेवटचा पर्याय कोड आकार वाढवू शकतो.
नवीन डिव्हाइस समर्थन खालील AVR भागांसाठी सपोर्ट उपलब्ध आहे: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128AVR28, AVR128DA32 B 128 , AVR48DB128, आणि AVR64DBXNUMX.
मागे घेतलेले डिव्हाइस समर्थन पुढील AVR भागांसाठी सपोर्ट आता उपलब्ध नाही: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, ATA664251C, ATAXNUMXQ.
३.३. आवृत्ती 3.7 (कार्यात्मक सुरक्षा प्रकाशन)
शीर्षलेख file कंपाइलर बंट-इनसाठी कंपाइलर MISRA सारख्या भाषेच्या वैशिष्ट्यांशी सुसंगत आहे याची खात्री करण्यासाठी, द शीर्षलेख file, जे आपोआप द्वारे समाविष्ट केले जाते , अद्ययावत केले गेले आहे. या शीर्षलेखामध्ये सर्व अंगभूत फंक्शन्सचे प्रोटोटाइप आहेत, जसे की बिल्ट इन_avr_nop ( ) आणि _builtin_avr_delay_cycles () . काही अंगभूत MISRA अनुरूप नसू शकतात; कंपाइलर कमांड लाइनमध्ये परिभाषित XC_STRICT MISRA जोडून हे वगळले जाऊ शकते. बिल्ट-इन आणि त्यांची घोषणा निश्चित-रुंदी प्रकार वापरण्यासाठी अद्यतनित केली गेली आहेत.
३.१. आवृत्ती 3.8
नवीन डिव्हाइस समर्थन खालील AVR भागांसाठी समर्थन उपलब्ध आहे: ATTINY 1624, ATTINY1626 आणि ATTINY 1 627.
उत्तम सर्वोत्तम फिट वाटप कंपाइलरमधील सर्वोत्तम फिट ऍलोकेटर (BFA) सुधारित केले गेले आहे जेणेकरुन चांगल्या ऑप्टिमायझेशनची परवानगी देणार्या क्रमाने विभागांचे वाटप केले जाईल. BFA आता नावाच्या पत्त्याच्या स्थानांना समर्थन देते आणि डेटा इनिशिएलायझेशन चांगल्या प्रकारे हाताळते.
सुधारित प्रक्रियात्मक अमूर्तता प्रक्रियात्मक ऍब्स्ट्रॅक्शन ऑप्टिमायझेशन आता अधिक कोड अनुक्रमांवर केले जातात. या ऑप्टिमायझेशनने कोडचा आकार वाढवला असेल अशा पूर्वीच्या परिस्थितींना ऑप्टिमायझेशन कोडला लिंकरच्या कचरा संकलन प्रक्रियेबद्दल जागरूक करून संबोधित केले गेले आहे.
AVR असेंबलरची अनुपस्थिती AVR असेंबलर या वितरणामध्ये यापुढे समाविष्ट केले जाणार नाही. ३.९. आवृत्ती 3.9 (कार्यात्मक सुरक्षा रिलीज)
काहीही नाही.
३.१. आवृत्ती 3.10
कोड कव्हरेज या प्रकाशनामध्ये कोड कव्हरेज वैशिष्ट्य समाविष्ट आहे जे प्रकल्पाचा स्त्रोत कोड किती प्रमाणात कार्यान्वित केला गेला आहे याचे विश्लेषण सुलभ करते. ते सक्षम करण्यासाठी -mcodecov=ram पर्याय वापरा. तुमच्या हार्डवेअरवर प्रोग्राम अंमलात आणल्यानंतर, कोड कव्हरेज माहिती डिव्हाइसमध्ये एकत्रित केली जाईल आणि हे MPLAB X IDE द्वारे कोड कव्हरेज प्लगइनद्वारे हस्तांतरित आणि प्रदर्शित केले जाऊ शकते. या प्लगइनवर माहिती मिळवण्यासाठी IDE दस्तऐवजीकरण पहा.
#pragma nocodecov चा वापर कव्हरेज विश्लेषणातून पुढील कार्ये वगळण्यासाठी केला जाऊ शकतो. तद्वतच प्राग्मा च्या सुरुवातीला जोडले जावे file ते संपूर्ण वगळण्यासाठी file कव्हरेज विश्लेषणातून. वैकल्पिकरित्या, _attribute_ ( (nocodecov)) कव्हरेज विश्लेषणातून विशिष्ट कार्य वगळण्यासाठी वापरले जाऊ शकते.
डिव्हाइसचे वर्णन files नवीन डिव्हाइस file avr_chipinfo.html नावाच्या डॉक्स निर्देशिकेत स्थित आहे
कंपाइलर वितरण. या file कंपाइलरद्वारे समर्थित सर्व उपकरणांची यादी करते. डिव्हाइसच्या नावावर क्लिक करा, आणि ते त्या डिव्हाइससाठी सर्व परवानगीयोग्य कॉन्फिगरेशन बिट सेटिंग/मूल्य जोड्या दर्शविणारे पृष्ठ उघडेल, उदाहरणार्थampलेस
प्रक्रियात्मक अमूर्तता प्रक्रियात्मक अॅबस्ट्रॅक्शन ऑप्टिमायझेशन, जे असेंबली कोडचे सामान्य ब्लॉक त्या ब्लॉकच्या एक्सट्रॅक्टेड कॉपीवर कॉलसह बदलतात, कंपाइलरमध्ये जोडले गेले आहेत. हे एका वेगळ्या ऍप्लिकेशनद्वारे केले जातात, जे स्तर 2, 3 किंवा निवडताना कंपाइलरद्वारे आपोआप बोलावले जाते. s ऑप्टिमायझेशन हे ऑप्टिमायझेशन कोड आकार कमी करतात, परंतु ते अंमलबजावणीची गती आणि कोड डीबगबिलिटी कमी करू शकतात.
-mno-pa पर्याय वापरून उच्च ऑप्टिमायझेशन स्तरांवर प्रक्रियात्मक अॅब्स्ट्रॅक्शन अक्षम केले जाऊ शकते किंवा -mpa वापरून कमी ऑप्टिमायझेशन स्तरांवर (तुमच्या परवान्याच्या अधीन) सक्षम केले जाऊ शकते. एखाद्या वस्तूसाठी ते अक्षम केले जाऊ शकते file -mno-pa-on-f ile= वापरूनfileनाव, किंवा -mno-pa-onfunotion=f वापरून फंक्शनसाठी अक्षम केले unction
तुमच्या सोर्स कोडच्या आत, फंक्शनच्या व्याख्येसह विशेषता_ ( (nopa) ) वापरून किंवा nopa वापरून, _attribute_ ( (nopa, noinline) ) पर्यंत विस्तारित आणि अशा प्रकारे फंक्शन इनलाइनिंग होण्यापासून प्रतिबंधित करून, प्रक्रियात्मक अमूर्तता अक्षम केली जाऊ शकते. आणि इनलाइन कोडचे अमूर्तता आहे.
प्रॅग्मा मध्ये लॉक बिट समर्थन #pragma कॉन्फिगरेशनचा वापर आता AVR लॉक बिट्स तसेच इतर कॉन्फिगरेशन बिट्स निर्दिष्ट करण्यासाठी केला जाऊ शकतो. avr_chipinfo.html तपासा file (वर उल्लेख केलेला) या प्रॅग्मासह वापरण्यासाठी सेटिंग/मूल्य जोड्यांसाठी.
नवीन डिव्हाइस समर्थन खालील भागांसाठी सपोर्ट उपलब्ध आहे: AVR28DAl28, AVR64DAl28, AVR32DAl28, आणि AVR48DAl28.
३.१. आवृत्ती 3.11
आपल्या पैशासाठी अधिक बिट या कंपाइलर आणि परवाना व्यवस्थापकाची macOS आवृत्ती आता 64-बिट ऍप्लिकेशन आहे. हे macOS च्या अलीकडील आवृत्त्यांवर चेतावणीशिवाय कंपाइलर स्थापित आणि चालेल याची खात्री करेल.
प्रोग्राम मेमरीमध्ये कॉन्स्ट ऑब्जेक्ट्स कंपायलर आता कॉन्स्ट-क्वालिफाईड ऑब्जेक्ट्स प्रोग्राम फ्लॅश मेमरीमध्ये ठेवू शकतो, त्या RAM मध्ये ठेवण्याऐवजी. कंपाइलरमध्ये बदल केले गेले आहेत जेणेकरून कॉन्स टी-क्वालिफाईड ग्लोबल डेटा प्रोग्राम फ्लॅश मेमरीमध्ये संग्रहित केला जाईल आणि योग्य प्रोग्राम-मेमरी सूचना वापरून हा डेटा प्रत्यक्ष आणि अप्रत्यक्षपणे ऍक्सेस केला जाऊ शकतो. हे नवीन वैशिष्ट्य डीफॉल्टनुसार सक्षम केले आहे परंतु -mno-const-data-in-progmem पर्याय वापरून अक्षम केले जाऊ शकते. avrxmega3 आणि avrtiny आर्किटेक्चरसाठी, हे वैशिष्ट्य आवश्यक नाही आणि नेहमी अक्षम केले जाते, कारण प्रोग्राम मेमरी या उपकरणांसाठी डेटा अॅड्रेस स्पेसमध्ये मॅप केली जाते.
विनामूल्य मानक या कंपायलरच्या विनापरवाना (विनामूल्य) आवृत्त्या आता स्तर 2 पर्यंत आणि त्यासह ऑप्टिमायझेशनला अनुमती देतात. हे मानक परवाना वापरून पूर्वी शक्य असलेल्या आउटपुटच्या समान, जरी एकसारखे नसले तरी अनुमती देईल.
AVRASM2 चे स्वागत आहे 2-बिट उपकरणांसाठी AVRASM8 असेंबलर आता XC8 कंपाइलर इंस्टॉलरमध्ये समाविष्ट केले आहे. हे असेंबलर XC8 कंपाइलरद्वारे वापरले जात नाही, परंतु हस्तलिखित असेंबली स्त्रोतावर आधारित प्रकल्पांसाठी उपलब्ध आहे.
नवीन डिव्हाइस समर्थन खालील भागांसाठी सपोर्ट उपलब्ध आहे: ATMEGA1608, ATMEGA 1609, ATMEGA808, आणि ATMEGA809.
३.१. आवृत्ती 3.12
उच्च-स्तरीय ड्रायव्हर xc8 -cc नावाचा नवीन ड्रायव्हर, आता मागील avr-gcc ड्रायव्हर आणि xc8 ड्रायव्हरच्या वर बसला आहे, आणि तो लक्ष्य उपकरणाच्या निवडीवर आधारित योग्य कंपाइलरला कॉल करू शकतो. हा ड्रायव्हर GCC-शैली पर्याय स्वीकारतो, जे एकतर कार्यान्वित केल्या जात असलेल्या कंपाइलरसाठी भाषांतरित किंवा पास केले जातात. हा ड्रायव्हर कोणत्याही AVR किंवा PIC टार्गेटसह समान शब्दार्थांसह पर्यायांच्या समान संचाचा वापर करण्यास अनुमती देतो आणि अशा प्रकारे कंपाइलरला कॉल करण्याचा शिफारस केलेला मार्ग आहे. आवश्यक असल्यास, जुन्या avr-gcc ड्राइव्हरला पूर्वीच्या कंपाइलर आवृत्त्यांमध्ये स्वीकारलेल्या जुन्या-शैलीच्या पर्यायांचा वापर करून थेट कॉल केला जाऊ शकतो.
कॉमन सी इंटरफेस हा कंपाइलर आता MPLAB कॉमन सी इंटरफेसशी सुसंगत होऊ शकतो, ज्यामुळे सर्व MPLAB XC कंपाइलरवर सोर्स कोड अधिक सहजपणे पोर्ट केला जाऊ शकतो. -mext=cci पर्याय या वैशिष्ट्याची विनंती करतो, अनेक भाषा विस्तारांसाठी पर्यायी वाक्यरचना सक्षम करतो.
नवीन ग्रंथपाल चालक ए नवीन ग्रंथपाल ड्राइव्हर मागील PIC लायब्ररी ग्रंथपाल आणि AVR avr-ar ग्रंथपालाच्या वर स्थित आहे. हा ड्रायव्हर GCC-archiver-शैली पर्याय स्वीकारतो, जे एकतर कार्यान्वित केल्या जाणाऱ्या ग्रंथपालासाठी भाषांतरित केले जातात किंवा पाठवले जातात. नवीन ड्रायव्हर कोणत्याही PIC किंवा AVR लायब्ररी तयार करण्यासाठी किंवा हाताळण्यासाठी समान शब्दार्थांसह पर्यायांचा एक समान संच वापरण्याची परवानगी देतो. file आणि अशा प्रकारे ग्रंथपालांना बोलावण्याचा शिफारस केलेला मार्ग आहे. लेगसी प्रकल्पांसाठी आवश्यक असल्यास, पूर्वीच्या कंपाइलर आवृत्त्यांमध्ये स्वीकारलेल्या जुन्या-शैलीच्या पर्यायांचा वापर करून मागील ग्रंथपालाला थेट कॉल केले जाऊ शकते.
स्थलांतर समस्या
खालील am वैशिष्ट्ये आहेत जी आता कंपाइलरद्वारे वेगळ्या पद्धतीने हाताळली जातात. या कंपाइलर आवृत्तीवर कोड पोर्ट करत असल्यास या बदलांसाठी तुमच्या स्रोत कोडमध्ये बदल करणे आवश्यक आहे. उपशीर्षकांमधील आवृत्ती क्रमांक पुढील बदलांना समर्थन देण्यासाठी प्रथम कंपायलर आवृत्ती सूचित करते.
३.३. आवृत्ती 4.1 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 4.2 काहीही नाही.
4.3. आवृत्ती 2.35
स्ट्रिंग-टू बेस (XC8-2420) हाताळणे इतर XC कंपाइलर्ससह सुसंगतता सुनिश्चित करण्यासाठी, XC8 स्ट्रिंग-टू फंक्शन्स, जसे की strtol () इ., निर्दिष्ट केलेला बेस 36 पेक्षा मोठा असल्यास इनपुट स्ट्रिंग रूपांतरित करण्याचा प्रयत्न करणार नाही आणि त्याऐवजी EINVAL वर errno सेट करेल. C मानक चे वर्तन निर्दिष्ट करत नाही जेव्हा हे मूळ मूल्य ओलांडले जाते तेव्हा कार्ये.
अयोग्य गती ऑप्टिमायझेशन स्तर 3 ऑप्टिमायझेशन (-03) निवडताना प्रक्रियात्मक अमूर्त ऑप्टिमायझेशन सक्षम केले जात होते. हे ऑप्टिमायझेशन कोड गतीच्या खर्चावर कोड आकार कमी करतात, म्हणून केले जाऊ नयेत. हे ऑप्टिमायझेशन स्तर वापरणारे प्रकल्प या प्रकाशनासह तयार केल्यावर कोड आकार आणि अंमलबजावणी गतीमध्ये फरक पाहू शकतात.
लायब्ररी कार्यक्षमता अनेक मानक C लायब्ररी फंक्शन्सचा कोड आता मायक्रोचिपच्या युनिफाइड स्टँडर्ड लायब्ररीमधून येतो, जो पूर्वीच्या avr-libc लायब्ररीच्या तुलनेत काही परिस्थितींमध्ये भिन्न वर्तन प्रदर्शित करू शकतो. उदाample, float-format specifiers साठी formatted I1 सपोर्ट चालू करण्यासाठी 1printf flt लायब्ररी (-0printf_flt पर्याय) मध्ये लिंक करणे आवश्यक नाही. मायक्रोचिप युनिफाइड स्टँडर्ड लायब्ररीची स्मार्ट 10 वैशिष्ट्ये हा पर्याय अनावश्यक बनवतात. याव्यतिरिक्त, स्ट्रिंग आणि मेमरी फंक्शन्स (उदा. strcpy_P ( ) इ.) साठी _P सफिक्स्ड रूटीन वापरणे आवश्यक नाही जे फ्लॅशमध्ये कॉन्स्ट स्ट्रिंगवर कार्य करतात. जेव्हा कॉन्स्ट-डेटा-इन-प्रोग्राम-मेमरी वैशिष्ट्य सक्षम असेल तेव्हा मानक C रूटीन (उदा. strcpy 0 ) अशा डेटासह योग्यरित्या कार्य करतील.
३.१. आवृत्ती 4.4
काहीही नाही.
३.१. आवृत्ती 4.5
काहीही नाही.
३.१. आवृत्ती 4.6
काहीही नाही.
३.३. आवृत्ती 4.1 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 4.2
बदललेला DFP लेआउट कंपाइलर आता DFPs (डिव्हाइस फॅमिली पॅक) द्वारे वापरलेला वेगळा लेआउट गृहीत धरतो. याचा अर्थ असा होईल की जुने DFP कदाचित या रिलीझसह कार्य करणार नाही आणि जुने कंपाइलर नवीनतम DFP वापरण्यास सक्षम असणार नाहीत.
३.३. आवृत्ती 4.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
४.४. आवृत्ती 4.4 काहीही नाही
३.१. आवृत्ती 4.5
प्रोग्राम मेमरीमधील कॉन्स्ट ऑब्जेक्ट्स लक्षात ठेवा की डीफॉल्टनुसार, कॉन्स्ट-क्वालिफाईड ऑब्जेक्ट्स प्रोग्राम मेमरीमध्ये ठेवल्या जातील आणि ऍक्सेस केल्या जातील (तिच्या वर्णनानुसार). हे तुमच्या प्रकल्पाच्या आकारावर आणि अंमलबजावणीच्या गतीवर परिणाम करेल, परंतु RAM वापर कमी करेल. -mnocons t-data-in-pr ogmem पर्याय वापरून, आवश्यक असल्यास, हे वैशिष्ट्य अक्षम केले जाऊ शकते.
३.१. आवृत्ती 4.6
कॉन्फिगरेशन फ्यूज डिव्हाइस कॉन्फिगरेशन फ्यूज आता कॉन्फिगरेशन प्राग्मा वापरून प्रोग्राम केले जाऊ शकतात ज्यानंतर फ्यूज स्थिती निर्दिष्ट करण्यासाठी सेटिंग-व्हॅल्यू जोड्या, उदा #pragma कॉन्फिगरेशन WDTON = SET #pragma कॉन्फिगरेशन BODLEVEL = BODLEVEL_4V3
निरपेक्ष वस्तू आणि कार्ये ऑब्जेक्ट्स आणि फंक्शन्स आता सीसीआय वापरून मेमरीमध्ये विशिष्ट पत्त्यावर ठेवता येतात _at (पत्ता) निर्दिष्टकर्ता, उदाampले:
समाविष्ट असल्यास
int foobar (0)0300100 वर;
char at(0x250) getID(int offset) ( या स्पेसिफायरचा युक्तिवाद हा एक स्थिर असणे आवश्यक आहे जे पत्त्याचे प्रतिनिधित्व करते ज्यावर प्रथम बाइट किंवा सूचना ठेवल्या जातील. RAM पत्ते Ox800000 चा ऑफसेट वापरून सूचित केले जातात. यासाठी CCI सक्षम करा हे वैशिष्ट्य वापरा.
नवीन इंटरप्ट फंक्शन सिंटॅक्स कंपाइलर आता CCI _interrupt स्वीकारते (संख्या) C फंक्शन्स इंटरप्ट हँडलर आहेत हे दर्शविण्यासाठी विनिर्देशक. विनिर्देशक एक व्यत्यय क्रमांक घेतो, उदाहरणार्थampले:
निश्चित समस्या
कंपाइलरमध्ये खालील सुधारणा केल्या आहेत. हे व्युत्पन्न केलेल्या कोडमधील दोषांचे निराकरण करू शकतात किंवा वापरकर्त्याच्या मार्गदर्शकाद्वारे अभिप्रेत किंवा निर्दिष्ट केलेल्या कंपाइलरच्या ऑपरेशनमध्ये बदल करू शकतात. उपशीर्षकांमधील आवृत्ती क्रमांक प्रथम कंपायलर आवृत्ती दर्शविते ज्यामध्ये पुढील समस्यांसाठी निराकरणे समाविष्ट आहेत. शीर्षकातील ब्रॅकेट केलेले लेबल हे ट्रॅकिंग डेटाबेसमधील समस्येची ओळख आहे. तुम्हाला सपोर्टशी संपर्क साधण्याची गरज असल्यास हे उपयुक्त ठरू शकतात.
लक्षात ठेवा की डिव्हाइस फॅमिली पॅक (DR)) डिव्हाइसशी संबंधित. DFP मध्ये केलेल्या बदलांच्या माहितीसाठी आणि नवीनतम पॅक डाउनलोड करण्यासाठी MPLAB पॅक व्यवस्थापक पहा.
३.३. आवृत्ती 5.1 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 5.2
विलंब करताना त्रुटी (XCS–१७) डीफॉल्ट फ्री मोड ऑप्टिमायझेशनमधील किरकोळ बदलांमुळे अंगभूत फंक्शन्समध्ये विलंब होण्यासाठी ऑपरेंड एक्सप्रेशन्सचे सतत फोल्डिंग रोखले जाते, परिणामी त्यांना नॉन-स्टँस्टंट मानले जाते आणि त्रुटी ट्रिगर होते. बिल्ट इन_avr_delay_cycles कंपाइल टाइम पूर्णांक स्थिरांक अपेक्षित आहे.
३.१. आवृत्ती 5.3
लागोपाठ वाटप _at वापरून (XCS–१७) एकाच नावाच्या विभागात आणि _at () वापरून अनेक ऑब्जेक्ट्सचे सलग वाटप योग्यरित्या कार्य करत नाही. उदाampले:
const char arrl[ ] विशेषता (विभाग(“.mysec”) at (0x500) = (OxAB, OxCD);
const char arr2[ ] विशेषता (sectionr.mysec")= (OxEF, OxFE);
arri नंतर लगेच arr2 ठेवले पाहिजे.
विभाग प्रारंभ पत्ते निर्दिष्ट करणे (XCS–2650) द -wl, -section-start पर्याय नामनिर्देशित प्रारंभ पत्त्यावर विभाग ठेवण्यास शांतपणे अयशस्वी झाला. कोणत्याही सानुकूल-नावाच्या विभागांसाठी ही समस्या निश्चित केली गेली आहे; तथापि, ते कोणत्याही मानक विभागांसाठी कार्य करणार नाही, जसे की . मजकूर किंवा bss, जे a वापरून ठेवले पाहिजे -wl, -टी पर्याय.
आराम करताना लिंकर क्रॅश होतो (XCS–2647) केव्हा -mrelax ऑप्टिमायझेशन सक्षम केले होते आणि ते कोड किंवा डेटा विभाग होते जे उपलब्ध मेमरीमध्ये बसत नाहीत, लिंकर क्रॅश झाला. आता, अशा परिस्थितीत, त्याऐवजी त्रुटी संदेश जारी केले जातात.
नाही नाही–पडणे–परत (XCS–2646) द -nofallback पर्याय योग्यरित्या अंमलात आणला गेला नाही किंवा दस्तऐवजीकरणही केला गेला नाही. कंपाइलर परवाना नसलेला असल्यास कंपाइलर कमी ऑप्टिमायझेशन सेटिंगमध्ये परत येणार नाही याची खात्री करण्यासाठी हे आता निवडले जाऊ शकते आणि त्याऐवजी त्रुटी जारी करेल.
अयोग्य गती ऑप्टिमायझेशन (XCS–१७) स्तर 3 ऑप्टिमायझेशन (-03) निवडताना प्रक्रियात्मक अमूर्त ऑप्टिमायझेशन सक्षम केले जात होते. हे ऑप्टिमायझेशन कोड गतीच्या खर्चावर कोड आकार कमी करतात, म्हणून केले जाऊ नयेत.
खराब EEPROM प्रवेश (XCS–१७) eeprom_read_block दिनचर्या Xmega उपकरणांवर योग्यरित्या कार्य करत नाही जेव्हा -mconst-data-in-progmem पर्याय सक्षम केला होता (जे डीफॉल्ट स्थिती आहे), परिणामी EEPROM मेमरी योग्यरित्या वाचली जात नाही.
अवैध मेमरी वाटप (X03-2593, XC8-2651) केव्हा -Ttext किंवा -Tdata लिंकर पर्याय (उदाample एक -wl ड्रायव्हर पर्याय वापरून पास केले) निर्दिष्ट केले आहे, संबंधित मजकूर/डेटा क्षेत्र मूळ अद्यतनित केले आहे; तथापि, शेवटचा पत्ता त्यानुसार समायोजित केला गेला नाही, ज्यामुळे क्षेत्र लक्ष्य उपकरणाची मेमरी श्रेणी ओलांडू शकते.
ओव्हर-एट्रिब्युटेड फंक्शनसह क्रॅश (XC8-2580) इंटरप्ट, सिग्नल किंवा nmi विशेषता, उदा. _attribute_ ( ( सिग्नल , इंटरप्ट ) ) पैकी एकापेक्षा जास्त फंक्शन घोषित केल्यास कंपाइलर क्रॅश होतो.
अवैध ATtiny व्यत्यय कोड (XC8-2465) ATtiny डिव्हाइसेससाठी बिल्डिंग करताना आणि ऑप्टिमायझेशन अक्षम केले होते (-00), इंटरप्ट फंक्शन्सने ऑपरेंड ऑफ रेंज असेंबलर मेसेज ट्रिगर केले असावे.
वापरताना पर्याय (XC8-2452) मधून पास होत नाहीत -wl एकाधिक, स्वल्पविरामाने विभक्त लिंकर पर्यायांसह पर्याय, सर्व लिंकर पर्याय लिंकरला पास केले जात नव्हते.
प्रोग्राम मेमरी (X03-2450) अप्रत्यक्षपणे वाचण्यात त्रुटी काही घटनांमध्ये, कंपाइलरने तयार केले पॉइंटरपासून प्रोग्राम मेमरीमध्ये दोन बाइट मूल्य वाचताना अंतर्गत त्रुटी (ओळखता न येणारी insn)
३.१. आवृत्ती 5.4
लायब्ररीचा दुसरा प्रवेश अयशस्वी (X03-2381) विद्यमान लायब्ररी संग्रहणात प्रवेश करण्यासाठी xc8-ar.exe लायब्ररी आर्काइव्हरची विंडोज आवृत्ती दुसर्यांदा वापरणे त्रुटी संदेशाचे नाव बदलण्यात अक्षम असल्याने अयशस्वी होऊ शकते.
३.१. आवृत्ती 5.5
अस्पष्ट कंपाइलर अपयश (XC8-2367) चालू असताना खिडक्या ज्या प्लॅटफॉर्मवर सिस्टीमची तात्पुरती डिरेक्टरी एका पथावर सेट केली होती ज्यामध्ये डॉट '.' वर्ण, कंपाइलर कार्यान्वित करण्यात अयशस्वी होऊ शकतो.
३.१. आवृत्ती 5.6
बाह्यरेखा (XC8-2299) हस्तलिखित असेंबली कोड जे जागतिक स्तरावर ठेवते त्यानंतर जागतिक लेबले चुकीची असेंब्ली सीक्वेन्समधील लेबल्स जी प्रक्रियात्मक अमूर्ततेद्वारे घटक बनविली जातात ती योग्यरित्या पुनर्स्थित केलेली नसावीत.
आरामदायी क्रॅश (XC8-2287) वापरून -mrelax पर्यायामुळे लिंकर क्रॅश झाला असेल तेव्हा टेल जंप रिलॅक्सेशन ऑप्टिमायझेशनने रेट इंस्ट्रक्शन काढून टाकण्याचा प्रयत्न केला ज्याच्या शेवटी नाही विभाग
मूल्ये म्हणून लेबल्स ऑप्टिमाइझ करताना क्रॅश (XC8-2282) कोड “मूल्ये म्हणून लेबल” GNU C वापरून भाषा विस्तारामुळे प्रक्रियात्मक अॅब्स्ट्रॅक्शन ऑप्टिमायझेशन क्रॅश होऊ शकते, आउटलाइन केलेल्या VMA श्रेणी स्पॅन फिक्सअप त्रुटीसह.
असे नाही const (XC8-2271) साठी प्रोटोटाइप strstr () आणि इतर फंक्शन्स पासून जेव्हा -mconst-data- inprogmem वैशिष्ट्य अक्षम केले असेल तेव्हा परत आलेल्या स्ट्रिंग पॉइंटर्सवर नॉन-स्टँडर्ड कॉन्स्ट क्वालिफायर निर्दिष्ट करू नका. लक्षात ठेवा की avrxmega3 आणि avrtiny डिव्हाइसेससह, हे वैशिष्ट्य कायमचे सक्षम केले आहे.
लॉस्ट इनिशिएलायझर्स (XC8-2269) जेव्हा भाषांतरात एकापेक्षा जास्त व्हेरिएबल असतात युनिट एका विभागात ठेवले होते (वापरून विभाग or विशेषता ( (विभाग) )), आणि असे पहिले व्हेरिएबल शून्य इनिशियलाइज केलेले होते किंवा त्यात इनिशिएलायझर नव्हते, त्याच भाषांतर युनिटमधील इतर व्हेरिएबल्ससाठी इनिशिएलायझर गमावले होते जे त्याच विभागात ठेवले होते.
५.१. आवृत्ती 5.1 2.2 (कार्यात्मक सुरक्षा प्रकाशन) काहीही नाही.
३.१. आवृत्ती 5.2
दीर्घ आदेशांसह त्रुटी (XC8-1983) AVR लक्ष्य वापरताना, कमांड लाइन अत्यंत मोठी असल्यास आणि त्यात कोट्स, बॅकस्लॅश इ. विशेष वर्ण असल्यास, कंपाइलर लिल्ट न सापडलेल्या त्रुटीसह थांबला असेल.
असाइन न केलेला रोडाटा विभाग (XC8-1920) AVR लिंकर avrxmega3 आणि avrtiny आर्किटेक्चरसाठी तयार करताना सानुकूल rodata विभागांसाठी मेमरी नियुक्त करण्यात अयशस्वी झाला, संभाव्यत: मेमरी ओव्हरलॅप त्रुटी निर्माण करते
३.३. आवृत्ती 5.3 (कार्यात्मक सुरक्षा प्रकाशन)
काहीही नाही.
३.१. आवृत्ती 5.4
रिलोकेशन अयशस्वी (XC8-1891) सर्वोत्तम फिट वाटप करणारा लिंकर विश्रांतीनंतर विभागांमध्ये मेमरी 'होल' सोडत होता. स्मृती खंडित करण्याव्यतिरिक्त, यामुळे पीसी-रिलेटिव्ह जंप किंवा कॉल श्रेणीबाहेर जाण्याशी संबंधित लिंकर रिलोकेशन अयशस्वी होण्याची शक्यता वाढली.
शिथिलतेने बदललेल्या सूचना (XC8-1889) लिंकर शिथिलता उडी मारण्यासाठी किंवा कॉल करण्याच्या सूचनांसाठी आली नाही ज्यांचे लक्ष्य आरामशीर असल्यास पोहोचू शकते.
गहाळ कार्यक्षमता (XC8E-3 ) पासून अनेक व्याख्या , जसे की clock_div_t आणि clock_presc ale_s et () , ATmega324PB, ATmega328PB, ATtiny441 आणि ATtiny841 सह, उपकरणांसाठी परिभाषित केले गेले नाहीत.
गहाळ मॅक्रो प्रीप्रोसेसर मॅक्रो _XC 8_MODE_, XC 8 VERS ION, XC, आणि xc8 कंपाइलरद्वारे स्वयंचलितपणे परिभाषित केले गेले नाहीत. हे आता उपलब्ध आहेत.
३.१. आवृत्ती 5.5
अंतर्गत कंपायलर त्रुटी (XC8-1822) Windows अंतर्गत तयार करताना, कोड ऑप्टिमाइझ करताना अंतर्गत कंपायलर त्रुटी निर्माण झाली असावी.
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 किंवा विशेषता() टोकन्ससह पॉइंटर ऑब्जेक्ट्स परिभाषित केले तर एक अंतर्गत त्रुटी आली, उदाहरणार्थample, char * _at (0x800150) cp; असा कोड आढळल्यास आता चेतावणी दिली जाते.
मुख्य कार्यान्वित करण्यात अयशस्वी (XC8-1780, XC8-1767, XC8-1754) EEPROM व्हेरिएबल्स वापरणे किंवा कॉन्फिगरेशन प्राग्मा वापरून फ्यूज परिभाषित केल्यामुळे, मुख्य 0 वर पोहोचण्यापूर्वी, रनटाइम स्टार्टअप कोडमध्ये चुकीचे डेटा इनिशिएलायझेशन आणि/किंवा लॉक अप प्रोग्राम एक्झिक्यूशन झाले असावे.
लहान उपकरणांसह फ्यूज त्रुटी (XC8-1778, XC8-1742) attiny4/5/9/10120140 उपकरणांमध्ये त्यांच्या शीर्षलेखात चुकीची फ्यूज लांबी निर्दिष्ट केली होती files ज्यामुळे फ्यूज परिभाषित करणारा कोड तयार करण्याचा प्रयत्न करताना लिंकर त्रुटी निर्माण होतात.
सेगमेंटेशन फॉल्ट (XC8-1777) मधूनमधून विभागणी दोष दुरुस्त केला गेला आहे.
असेंबलर क्रॅश (XC8-1761) जेव्हा कंपाइलर उबंटू 18 अंतर्गत चालविला गेला तेव्हा avr -as असेंबलर क्रॅश झाला असेल.
वस्तू साफ केल्या नाहीत (XC8-1752) रनटाइम स्टार्टअप कोडद्वारे सुरू न केलेले स्टॅटिक स्टोरेज कालावधी ऑब्जेक्ट्स कदाचित साफ केले गेले नसतील.
विरोधाभासी उपकरण तपशील दुर्लक्षित (XC8-1749) द कंपाइलर एरर निर्माण करत नाही जेव्हा एकाधिक डिव्हाइस स्पेसिफिकेशन पर्याय वापरले आणि भिन्न डिव्हाइसेस सूचित केले.
ढीग द्वारे मेमरी भ्रष्टाचार (XC8-1748) द _heap_start चिन्ह चुकीच्या पद्धतीने सेट केले जात होते, परिणामी सामान्य व्हेरिएबल्स हीपद्वारे खराब होण्याची शक्यता होती.
लिंकर रिलोकेशन एरर (XC8-1739) कोडमध्ये rjmn किंवा rcal बरोबर 4k बाइट्स दूर असलेल्या लक्ष्यासह लिंकर रिलोकेशन एरर उत्सर्जित झाली असावी.
४.४. आवृत्ती 5.6 काहीही नाही.
ज्ञात समस्या
कंपाइलरच्या ऑपरेशनमध्ये खालील मर्यादा आहेत. हे सामान्य कोडिंग निर्बंध असू शकतात किंवा वापरकर्त्याच्या मॅन्युअलमध्ये समाविष्ट असलेल्या माहितीतील विचलन असू शकतात. ज्वारीतील कंसातील लेबल हे ट्रॅकिंग डेटाबेसमधील समस्येची ओळख आहे. तुम्हाला समर्थनाशी संपर्क साधण्याची आवश्यकता असल्यास हे फायदेशीर ठरू शकते. ज्या वस्तूंवर लेबले नाहीत त्या मर्यादा आहेत ज्या मोडी ऑपरेंडीचे वर्णन करतात आणि ज्या कायमस्वरूपी लागू राहण्याची शक्यता आहे.
६.१. MPLAB X IDE एकत्रीकरण
MPLAB IDE एकत्रीकरण जर MPLAB IDE वरून कंपाइलर वापरायचा असेल, तर कंपाइलर स्थापित करण्यापूर्वी तुम्ही MPLAB IDE स्थापित करणे आवश्यक आहे.
६.२. कोड जनरेशन
अयोग्य आरंभीकरण (XC8-2679) डेटा मेमरीमध्ये काही ग्लोबल/स्टॅटिक बाइट-आकाराच्या ऑब्जेक्ट्सची प्रारंभिक मूल्ये कोठे ठेवली जातात आणि रनटाइमच्या वेळी व्हेरिएबल्स कोठे ऍक्सेस केले जातील यात तफावत आहे.
strtod चुकीच्या पद्धतीने endptr सेट करते (XC8-2652) स्ट्रटोड () द्वारे रूपांतरणासाठी विषय स्ट्रिंगमध्ये घातांक स्वरूपात फ्लोटिंग-पॉइंट संख्या दिसते आणि e वर्णानंतर एक अनपेक्षित वर्ण आहे अशा घटनांमध्ये, endptr पत्ता, प्रदान केल्यास, नंतर वर्णाकडे निर्देश करेल ई आणि ई स्वतः नाही. उदाample: strtod (“100exy”, endptr);
endptr x वर्णाकडे निर्देशित करेल.
खराब अप्रत्यक्ष फंक्शन कॉल्स (X03-2628) काही घटनांमध्ये, संरचनेचा भाग म्हणून संचयित केलेल्या फंक्शन पॉइंटरद्वारे केलेले फंक्शन कॉल अयशस्वी होऊ शकतात.
हेक्साडेसिमल फ्लोट्ससाठी strtof शून्य परतावा (XC8-2626) लायब्ररी फंक्शन्स strtof () et al आणि scanf () et al, नेहमी हेक्साडेसिमल फ्लोटिंग-पॉइंट नंबरमध्ये रूपांतरित करते जी शून्यावर घातांक निर्दिष्ट करत नाही. उदाample: strtof (“Oxl”, &endptr); मूल्य 0 परत करेल, 1 नाही.
चुकीचा स्टॅक सल्लागार संदेशन (XC8-2542, XC8-2541) काही घटनांमध्ये, वापरलेल्या पुनरावृत्ती किंवा अनिश्चित स्टॅकबद्दल स्टॅक सल्लागार चेतावणी (शक्यतो alloca() च्या वापराद्वारे) उत्सर्जित केली जात नाही.
डुप्लिकेट इंटरप्ट कोडसह अयशस्वी (XC8-2421) जिथे एकापेक्षा जास्त इंटरप्ट फंक्शन एकच बॉडी असते, तिथे कंपायलरला एका इंटरप्ट फंक्शनसाठी आउटपुट असू शकते दुसऱ्याला कॉल करा. यामुळे सर्व कॉल-क्लोबर्ड रजिस्टर्स अनावश्यकपणे सेव्ह होतील, आणि सध्याच्या व्यत्यय हँडलरचा उपसंहार सुरू होण्यापूर्वीच व्यत्यय सक्षम केले जातील, ज्यामुळे कोड बिघाड होऊ शकतो.
कॉन्स प्रोग्राम मेमरीमध्ये नसलेल्या वस्तू (XC8-2408) avrxmega3 आणि avrtiny प्रकल्पांसाठी युनिटीअलाइज्ड कॉन्स्ट ऑब्जेक्ट्स डेटा मेमरीमध्ये ठेवल्या जातात, जरी एक चेतावणी सूचित करते की ते प्रोग्राम मेमरीमध्ये ठेवलेले आहेत. हे डेटा मेमरी स्पेसमध्ये प्रोग्राम मेमरी मॅप केलेले नसलेल्या डिव्हाइसेसवर परिणाम करणार नाही, किंवा प्रारंभ केलेल्या कोणत्याही ऑब्जेक्टवर परिणाम करणार नाही.
अवैध DFP पथ (XCS-2376) सह खराब आउटपुट जर कंपायलरला अवैध DFP पथ आणि 'स्पेक' वापरून आवाहन केले असेल तर file निवडलेल्या उपकरणासाठी अस्तित्वात आहे, कंपाइलर गहाळ डिव्हाइस फॅमिली पॅकची तक्रार करत नाही आणि त्याऐवजी 'स्पेक' निवडत आहे file, जे नंतर अवैध आउटपुट होऊ शकते. 'विशेष' files कदाचित वितरीत केलेल्या DFP सह अद्ययावत नसतील आणि ते केवळ अंतर्गत कंपाइलर चाचणीसाठी वापरण्यासाठी होते.
मेमरी ओव्हरलॅप सापडला नाही (XC8-1966) संकलक पत्त्यावर (_at 0 द्वारे) आणि _ वापरून इतर ऑब्जेक्ट्सवर निरपेक्ष केलेल्या वस्तूंचा मेमरी ओव्हरलॅप शोधत नाही.पंथion () निर्दिष्टकर्ता आणि ते समान पत्त्याशी जोडलेले आहेत.
लायब्ररी फंक्शन्स आणि _memx (XC8-1763) सह अयशस्वी _memx अॅड्रेस स्पेसमधील वितर्क असलेली libgcc फ्लोट फंक्शन्स अयशस्वी होऊ शकतात. लक्षात घ्या की लायब्ररी रूटीन काही C ऑपरेटरकडून कॉल केले जातात, म्हणून, उदाहरणार्थample, खालील कोड प्रभावित झाला आहे: रिटर्न regFloatVar > memxFloatVar;
मर्यादित libgcc अंमलबजावणी (AVRTC-731) साठी ATTiny4/5/9/10/20/40 उत्पादने, libgcc मधील मानक C/Math लायब्ररी अंमलबजावणी अत्यंत मर्यादित आहे किंवा सध्या नाही.
प्रोग्राम मेमरी मर्यादा (AVRTC-732) 128 kb च्या पलीकडील प्रोग्राम मेमरी प्रतिमा टूलचेनद्वारे समर्थित आहेत; तथापि, जेव्हा -mrelax पर्याय वापरला जातो तेव्हा आवश्यक फंक्शन स्टब व्युत्पन्न करण्याऐवजी शिथिलता न घेता आणि उपयुक्त त्रुटी संदेशाशिवाय लिंकर अॅबॉर्ट झाल्याची ज्ञात उदाहरणे आहेत.
नाव जागा मर्यादा (AVRTC-733) वापरकर्त्याच्या मार्गदर्शक विभागातील स्पेशल टाइप क्वालिफायर्समध्ये नमूद केलेल्या मर्यादांच्या अधीन राहून, नामांकित पत्त्याच्या जागा टूलचेनद्वारे समर्थित आहेत.
टाइम झोन द लायब्ररी फंक्शन्स GMT गृहीत धरतात आणि स्थानिक टाइम झोनला समर्थन देत नाहीत, अशा प्रकारे loca It ime 0 gmtime ( ) प्रमाणेच वेळ परत करेल.ampले
कागदपत्रे / संसाधने
![]() |
MICROCHIP MPLAB XC8 C कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स [pdf] वापरकर्ता मार्गदर्शक MPLAB XC8 C कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स, MPLAB XC8 C, कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स, AVR MCU साठी रिलीज नोट्स |
![]() |
MICROCHIP MPLAB XC8 C कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स [pdf] वापरकर्ता मार्गदर्शक MPLAB XC8 C कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स, MPLAB XC8 C, कंपाइलर आवृत्ती 2.39 AVR MCU साठी रिलीज नोट्स, AVR MCU साठी नोट्स |
![]() |
मायक्रोचिप MPLAB XC8 C कंपाइलर [pdf] वापरकर्ता मार्गदर्शक MPLAB XC8 C कंपाइलर, MPLAB XC8 C, कंपाइलर |