MPLAB® XC8 C ڪمپلر ورزن 2.41 رليز نوٽس AVR® MCU لاءِ
مالڪ جو دستور
MPLAB XC8 C ڪمپائلر ڊولپمينٽ سافٽ ويئر
هي دستاويز MPLAB XC8 C ڪمپائلر سان لاڳاپيل اهم معلومات تي مشتمل آهي جڏهن مائڪروچپ AVR ڊوائيسز کي نشانو بڻايو وڃي.
مهرباني ڪري هن سافٽ ويئر کي هلائڻ کان اڳ پڙهو. ڏسو MPLAB XC8 C ڪمپائلر رليز نوٽس PIC ڊاڪيومينٽ لاءِ جيڪڏھن توھان استعمال ڪري رھيا آھيو 8-bit PIC ڊوائيسز لاءِ ڪمپائلر.
مٿانview
1.1. تعارف
Microchip MPLAB® XC8 C ڪمپلر جي هي رليز ڪيترن ئي نئين خاصيتن ۽ بگ فڪسس تي مشتمل آهي.
1.2. تعمير جي تاريخ
هن ڪمپيلر ورزن جي باضابطه تعمير جي تاريخ 8 فيبروري 2023 آهي.
1.3. پويون نسخو
اڳوڻو MPLAB XC8 C مرتب ڪندڙ ورزن 2.40 جولاءِ 3 2022 تي ٺهيل هو.
1.4. فنڪشنل حفاظت دستي
MPLAB XC گڏ ڪرڻ وارن لاءِ هڪ فنڪشنل حفاظتي دستياب دستاويزي پيڪيج ۾ موجود آهي جڏهن توهان هڪ فنڪشنل حفاظتي لائسنس خريد ڪندا آهيو.
1.5. اجزاء لائسنس ۽ نسخو
MPLAB XC8 C Compiler for AVR MCUs ٽولز GNU جنرل پبلڪ لائسنس (GPL) جي تحت لکيل ۽ ورهايل آهن جنهن جو مطلب آهي ته ان جو سورس ڪوڊ آزاد طور تي ورهايو ويو آهي ۽ عوام لاءِ دستياب آهي.
GNU GPL تحت اوزارن لاءِ سورس ڪوڊ شايد ڊائون لوڊ ڪري سگھجي ٿو الڳ الڳ مائڪروچپ کان webسائيٽ. توھان پڙھي سگھوٿا GNU GPL نالي فائل ۾ جيڪو توھان جي install license.txt avr/doc ڊاريڪٽري جي ذيلي ڊائريڪٽري ۾ واقع آھي. GPL جي بنيادي اصولن جو هڪ عام بحث هتي ملي سگهي ٿو.
هيڊر فائلن لاءِ مهيا ڪيل سپورٽ ڪوڊ، لنڪر اسڪرپٽ، ۽ رن ٽائم لائبرريون ملڪيتي ڪوڊ آهن ۽ GPL جي هيٺان ڍڪيل نه آهن.
هي ڪمپلر GCC ورجن 5.4.0، binutils ورجن 2.26، ۽ avr-libc ورجن 2.0.0 استعمال ڪري ٿو.
1.6. سسٽم گهرجون
MPLAB XC8 C مرتب ڪندڙ ۽ لائسنسنگ سافٽ ويئر ان کي استعمال ڪري ٿو مختلف آپريٽنگ سسٽم لاءِ دستياب آهن، جن ۾ هيٺيان 64-bit ورجن شامل آهن: Microsoft® Windows® 10 جا پروفيشنل ايڊيشن؛ Ubuntu® 18.04؛ ۽ macOS® 10.15.5. ونڊوز لاءِ بائنري ڪوڊ سائن ڪيو ويو آهي. macOS لاءِ بائنري ڪوڊ سائن ڪيو ويو ۽ نوٽرائز ڪيو ويو. MPLAB XC نيٽورڪ لائسنس سرور مختلف قسم جي 64-bit آپريٽنگ سسٽم لاءِ موجود آهي، بشمول Microsoft Windows 10 ۽ مٿي؛ Ubuntu 18.04 ۽ مٿي؛ يا macOS 10.15 ۽ مٿي. سرور شايد ونڊوز سرور، لينڪس ڊسٽريبيوشنز، جهڙوڪ Oracle® Enterprise Linux® ۽ Red Hate Enterprise Linux ۽ گڏوگڏ سپورٽ ٿيل آپريٽنگ سسٽم جا پراڻا ورجن سميت مختلف آپريٽنگ سسٽمن تي پڻ هلائي سگھن ٿا. بهرحال، MPLAB XC نيٽورڪ لائسنس سرور انهن آپريٽنگ سسٽم تي آزمائشي نه آهي. MPLAB XC نيٽورڪ لائسنس سرور هلائي سگھجي ٿو ورچوئل مشينن تي سپورٽ ٿيل OS جي ورچوئل مشين جو لائسنس استعمال ڪندي نيٽ ورڪ لائسنس لاءِ (SW006021-VM). MPLAB XC نيٽورڪ سرور جا سڀ 32-bit ورجن بند ڪيا ويا آھن ورجن 3.00 کان شروع ٿي.
آلات سپورٽ ڪيو
هي مرتب ڪندڙ سڀني موجود 8-bit AVR MCU ڊوائيسز کي رليز ڪرڻ وقت سپورٽ ڪري ٿو. ڏسو (ڪمپائلر جي ڊاريڪٽري ۾) سڀني سپورٽ ڊوائيسز جي فهرست لاء. اهي فائلون پڻ لسٽ ڪن ٿيون
avr_chipinfo.html هر ڊيوائس لاءِ ڊيڪ ڪنفيگريشن بٽ سيٽنگون.
1.7. ايڊيشن ۽ لائسنس اپ گريڊ
MPLAB XC8 گڏ ڪرڻ وارو هڪ لائسنس يافته (PRO) يا غير لائسنس يافته (مفت) پيداوار جي طور تي چالو ٿي سگهي ٿو. توهان کي پنهنجي ڪمپيلر کي لائسنس ڏيڻ لاءِ هڪ ايڪٽيويشن چيڪ خريد ڪرڻ جي ضرورت آهي. لائسنس مفت پراڊڪٽ جي مقابلي ۾ اعليٰ سطح جي اصلاح جي اجازت ڏئي ٿو. هڪ غير لائسنس يافته ڪمپيلر بغير لائسنس جي اڻڄاتل طور تي هلائي سگهجي ٿو. هڪ MPLAB XC8 فنڪشنل حفاظتي ڪمپلر لازمي طور تي فعال ٿيڻ گهرجي هڪ فنڪشنل حفاظت لائسنس سان خريد ڪيل مائڪروچپ. ڪمپيلر هن لائسنس کان سواءِ ڪم نه ڪندو. هڪ دفعو چالو ڪيو ويو، توهان ڪنهن به اصلاح جي سطح کي منتخب ڪري سگهو ٿا ۽ سڀني ڪمپيلر خاصيتون استعمال ڪري سگهو ٿا. MPLAB XC فنڪشنل سيفٽي ڪمپلر جو هي رليز نيٽ ورڪ سرور لائسنس کي سپورٽ ڪري ٿو.
ڏسو انسٽال ڪرڻ ۽ لائسنس ڏيڻ MPLAB XC C Compilers (DS50002059) دستاويز لائسنس جي قسمن تي معلومات لاءِ ۽ هڪ لائسنس سان گڏ ڪمپلر جي انسٽاليشن.
1.8. تنصيب ۽ فعال ٿيڻ
پڻ ڏسو لڏپلاڻ جا مسئلا ۽ حدون سيڪشن هن ڪمپيلر سان شامل جديد لائسنس مينيجر بابت اهم معلومات لاءِ.
جيڪڏهن MPLAB IDE استعمال ڪري رهيا آهيو، هن اوزار کي انسٽال ڪرڻ کان پهريان تازو MPLAB X IDE ورجن 5.0 يا بعد ۾ انسٽال ڪرڻ جي پڪ ڪريو. ڪمپلر کي انسٽال ڪرڻ کان اڳ IDE کي ڇڏي ڏيو. (Windows)، (Linux) يا (macOS) .exe .run .app compiler انسٽالر ايپليڪيشن، مثال طور ۽ اسڪرين تي ڏنل هدايتن تي عمل ڪريو. XC8-1.00.11403-windows.exe ڊفالٽ انسٽاليشن ڊاريڪٽري سفارش ڪئي وئي آهي. جيڪڏهن توهان لينڪس استعمال ڪري رهيا آهيو، توهان کي لازمي طور تي انسٽال ڪرڻ گهرجي هڪ ٽرمينل استعمال ڪندي ۽ روٽ اڪائونٽ مان. انسٽال ڪريو MacOS اڪائونٽ استعمال ڪندي منتظم جي استحقاق سان.
چالو ھاڻي انسٽاليشن لاءِ الڳ الڳ ڪيو ويو آھي. ڏسو دستاويز لائسنس مئنيجر MPLAB® XC C Compilers (DS52059) لاءِ وڌيڪ معلومات لاءِ.
جيڪڏھن توھان چونڊيندا آھيو مرتب ڪندڙ کي هلائڻ لاءِ تشخيصي لائسنس تحت، توھان کي ھاڻي ملندو ھڪ انتباہ تاليف جي دوران جڏھن توھان ھوندؤ 14 ڏينهن اندر توھان جي تشخيص واري مدت جي ختم ٿيڻ کان. ساڳي ڊيڄاريندڙ جاري ڪئي وئي آهي جيڪڏهن توهان آهيو 14 ڏينهن اندر توهان جي HPA سبسڪرپشن جي ختم ٿيڻ جي.
XC نيٽورڪ لائسنس سرور هڪ الڳ انسٽالر آهي ۽ اڪيلو استعمال ڪندڙ ڪمپيلر انسٽالر ۾ شامل نه آهي.
XC لائسنس مئنيجر ھاڻي فلوٽنگ نيٽ ورڪ لائسنس جي رومنگ کي سپورٽ ڪري ٿو. موبائيل استعمال ڪندڙن لاءِ، هي فيچر هڪ فلوٽنگ لائسنس کي اجازت ڏئي ٿو ته نيٽ ورڪ کي ٿوري وقت لاءِ بند ڪري. ھن خصوصيت کي استعمال ڪندي، توھان نيٽ ورڪ کان ڌار ڪري سگھو ٿا ۽ اڃا تائين پنھنجي MPLAB XC مرتب ڪندڙ کي استعمال ڪري سگھو ٿا. هن فيچر تي وڌيڪ لاءِ XCLM انسٽال جو ڊاڪ فولڊر ڏسو.
MPLAB X IDE ۾ بصري طور تي رومنگ کي منظم ڪرڻ لاءِ لائسنس ونڊو (ٽولز> لائسنس) شامل آهن.
1.8.1. تنصيب جي مسئلن کي حل ڪرڻ
جيڪڏهن توهان ڪنهن به ونڊوز آپريٽنگ سسٽم تحت ڪمپلر کي انسٽال ڪرڻ ۾ مشڪلاتن جو تجربو ڪريو ٿا، هيٺ ڏنل تجويزون ڪوشش ڪريو.
انسٽاليشن کي ايڊمنسٽريٽر طور ھلايو.
انسٽالر ايپليڪيشن جي اجازتن کي سيٽ ڪريو 'مڪمل ڪنٽرول' تي. (فائل تي صحيح ڪلڪ ڪريو، پراپرٽيز چونڊيو، سيڪيورٽي ٽيب، استعمال ڪندڙ چونڊيو، ايڊٽ ڪريو.)
عارضي فولڊر جي اجازتن کي سيٽ ڪريو 'مڪمل ڪنٽرول'.
temp فولڊر جي جڳھ کي طئي ڪرڻ لاء، ٽائپ ڪريو %temp% کي رن ڪمانڊ ۾ (ونڊوز لوگو ڪي + آر).
اهو هڪ فائيل ايڪسپلورر ڊائلاگ کوليندو جيڪو ڊاريڪٽري کي ڏيکاريندو ۽ توهان کي ان فولڊر جو رستو طئي ڪرڻ جي اجازت ڏيندو.
1.9. مرتب ڪندڙ دستاويز
ڪمپيلر جي استعمال ڪندڙ جي ھدايتن کي کوليو وڃي ٿو HTML پيج تان جيڪو توھان جي برائوزر ۾ کلي ٿو جڏھن MPLAB X IDE ڊيش بورڊ ۾ نيري مدد واري بٽڻ تي ڪلڪ ڪريو، جيئن اسڪرين شاٽ ۾ ڏيکاريل آھي.
جيڪڏھن توھان ٺاھي رھيا آھيو 8-bit AVR ھدف لاءِ، MPLAB® XC8 C Compiler User's Guide for AVR® MCU انھن ڪمپلر جي اختيارن ۽ خاصيتن تي مشتمل آھي جيڪي ھن فن تعمير تي لاڳو آھن.

1.10. ڪسٽمر حمايت
مائڪروچپ هن ڪمپيلر ورزن جي حوالي سان بگ رپورٽن، تجويزن يا تبصرن کي ڀليڪار ڪري ٿو. مھرباني ڪري ڪنھن به بگ رپورٽ يا خصوصيت جي درخواستن کي سپورٽ سسٽم ذريعي سڌو ڪريو.
دستاويزي تازه ڪاريون
MPLAB XC8 دستاويزن جي آن لائين ۽ تازه ترين ورزن لاءِ، مھرباني ڪري دورو ڪريو Microchip جي آن لائين ٽيڪنيڪل دستاويزن webسائيٽ. ھن رليز ۾ نئون يا اپڊيٽ ٿيل AVR دستاويز:
- AVR® MCU لاءِ MPLAB® XC8 C ڪمپائلر استعمال ڪندڙ ھدايت ڪندڙ (نظرثاني G)
- AVR® GNU Toolchain to MPLAB® XC8 مائيگريشن گائيڊ (نظرثاني A)
- Hexmate يوزر گائيڊ (نظرثاني B)
AVR® GNU Toolchain to MPLAB® XC8 لڏپلاڻ گائيڊ وضاحت ڪري ٿو سورس ڪوڊ ۾ تبديليون ۽ اختيارن کي ٺاھيو جيڪي گھربل ٿي سگھن ٿا جيڪڏھن توھان فيصلو ڪريو سي-بنياد پروجيڪٽ کي AVR 8-bit GNU Toolchain کان Microchip MPLAB XC8 C ڪمپائلر ڏانھن. Microchip Unified Standard Library Reference Guide بيان ڪري ٿي ته فعلن جي رويي ۽ انٽرفيس جي وضاحت ڪئي وئي Microchip Unified Standard Library پاران بيان ڪئي وئي آھي، گڏوگڏ لائبريري جي قسمن ۽ ميڪروز جو ارادو استعمال. ھن معلومات مان ڪجھ اڳ ۾ موجود ھئي MPLAB® XC8 C Compiler User's Guide for AVR® MCU. ڊوائيس جي مخصوص لائبريري جي معلومات اڃا تائين هن ڪمپيلر گائيڊ ۾ شامل آهي.
جيڪڏهن توهان صرف 8-bit ڊوائيسز ۽ MPLAB XC8 C ڪمپائلر سان شروعات ڪري رهيا آهيو، MPLAB® XC8 يوزر گائيڊ فار ايمبيڊڊ انجنيئرز - AVR® MCUs (DS50003108) وٽ معلومات آهي MPLAB X IDE ۾ پروجيڪٽ قائم ڪرڻ ۽ توهان جي لاءِ ڪوڊ لکڻ. پهريون MPLAB XC8 C پروجيڪٽ. ھي ھدايت ھاڻي مرتب ڪندڙ سان ورهايو ويو آھي.
Hexmate يوزر گائيڊ انهن لاءِ آهي جيڪي Hexmate هلائي رهيا آهن هڪ اسٽينڊ اڪيلو ايپليڪيشن جي طور تي.
نئون ڇا آهي
ھيٺيون آھن نيون AVR- ھدف جون خاصيتون جيڪي ھاڻي گڏ ڪندڙ کي سپورٽ ڪري ٿو. ذيلي عنوانن ۾ ورجن نمبر ڏيکاري ٿو پھرين ڪمپيلر ورزن کي سپورٽ ڪرڻ لاءِ جيڪي ھيٺيون خاصيتون آھن.
3.1. نسخو 2.41
Bootrow سپورٽ (XC8-3053) ڪمپيلر ڪنهن به سيڪشن جي مواد کي HEX فائل ۾ بوٽرو ايڊريس 0x860000 تي اڳياڙي سان رکي ٿو. اهي حصا BOOTROW ميموري لاءِ استعمال ڪيا ويا آهن، جيڪي چاٻين ۽ ٻين محفوظ معلومات جي اسٽوريج لاءِ ٺهيل آهن جيڪي صرف بوٽ لوڊر تائين پهچن ٿيون.
ريڊنڊنٽ ريٽرن ايليمينيشن (XC8-3048) ڪمپلر هاڻي ريٽ فنڪشن ۾ بيڪار هدايتن کي ختم ڪندو هڪ دم جمپ سان جڏهن ڪسٽم لنڪر اسڪرپٽ استعمال ڪيا ويندا. اهو ساڳيو اصلاح آهي جيڪو اڳ ۾ ڪيو ويو آهي، پر اهو هاڻي سڀني يتيم حصن تي ڪيو ويو آهي، جيتوڻيڪ هڪ ڪسٽم لنڪر اسڪرپٽ استعمال ڪيو ويو آهي ۽ بهترين فٽ مختص اسڪيم راند ۾ نه آهي. وقت جي قسم جي تبديلي (XC8-2982, 2932) C99 معياري لائبريري جو قسم، هڪ time_t کان هڪ قسم ۾ تبديل ڪيو ويو آهي، جيڪو ڪجهه وقت سان لاڳاپيل ڊگهي ڊگھي ڪمن ۾ ڪوڊ-سائيز بهتري ڏئي ٿو، جهڙوڪ. غير دستخط ٿيل ڊگهو mktime()
نئون nop (XC8-2946, 2945) ميڪرو ۾ شامل ڪيو ويو آھي. هي ميڪرو داخل ڪري ٿو نه- NOP() پيداوار ۾ nop آپريشن جي هدايت.
XCLM (XC8-2944) تي تازه ڪاري ڪريو لائيسنس مئنيجر جيڪو ڪمپلر سان استعمال ڪيو ويو آھي اپڊيٽ ڪيو ويو آھي ۽ ھاڻي وڌيڪ جوابدار آھي جڏھن گڏ ڪرڻ واري جي لائسنس جي تفصيلن کي جانچيندي.
Trampاوائلڊ ڪالز (XC8-2760) ڪمپيلر هاڻي ڊگھي فارم واري ڪال جي هدايتن کي مٽائي سگھي ٿو ننڍين لاڳاپي واري ڪالن سان، جڏهن ته هدايتن جا لاڳاپا فارم عام طور تي پنهنجي منزل جي حد کان ٻاهر هوندا. هن صورتحال ۾، گڏ ڪرڻ وارو هدايتن سان تبديل ڪرڻ جي ڪوشش ڪندو rcal هڪ هدايت کي ڪال ڪرڻ لاء جيڪو 'tr' ڪندو.ampoline' گهربل ايڊريس تي عمل ڪرڻ، مثال طورample: jmp
ٽي آر ڪال ڪريوamp_foo؛ سڏ ڪيو ويو foo
...
ٽي آر ڪال ڪريوamp_فو
...
tramp_foo:
jmp foo
هي اصلاح، ساڳئي پروگرام جي وهڪري جي اصلاحن سان گڏ، -mrelax آپشن پاران ڪنٽرول ڪيو ويندو آهي.
3.2. نسخو 2.40
نئين ڊيوائس سپورٽ سپورٽ ھاڻي ھيٺ ڏنل AVR حصن لاءِ دستياب آھي: AT90PWM3، AVR16DD14، AVR16DD20، AVR16DD28، AVR16DD32، AVR32DD14، AVR32DD20، AVR32DD28،AVR32DD32،AVR64DD28،AVR64AVR32 64، ۽ AVR48EAXNUMX.
بهتر ڪيل پروسيجرل ايبسٽرڪشن (PA) آپٽمائيزيشن ٽول کي بهتر ڪيو ويو آهي ته جيئن ڪوڊ جنهن ۾ فنڪشن ڪال انسٽرڪشن (/ ) شامل هجي استعمال ڪري سگهجي. اهو صرف ڪال آرڪال تي ٿيندو جيڪڏهن اسٽيڪ استعمال نه ڪيو ويو آهي دليلن کي پاس ڪرڻ ۽ نه ئي فنڪشن مان واپسي جي قيمت حاصل ڪرڻ لاءِ. اسٽيڪ استعمال ڪيو ويندو آھي جڏھن ھڪڙي فنڪشن کي ڪال ڪري رھيا آھن متغير دليلن جي فهرست سان يا جڏھن ھڪڙي فنڪشن کي سڏيندو آھي جيڪو ھن مقصد لاء نامزد ٿيل رجسٽرن کان وڌيڪ دليلن کي وٺندو آھي. ھن خصوصيت کي اختيار استعمال ڪندي غير فعال ڪري سگھجي ٿو، يا طريقياتي تجزيي کي مڪمل طور تي غير فعال ڪري سگھجي ٿو ھڪڙي اعتراض فائل يا فنڪشن لاءِ استعمال ڪندي، ترتيب سان، يا خصوصيت (مخصوص) استعمال ڪندي فنڪشن سان.
mno-pa-outline-calls-mno-pa-on-file -mno-pa-on-function nopa ڪوڊ ڪوريج ميڪرو ڪمپائلر هاڻي ميڪرو جي وضاحت ڪري ٿو جيڪڏهن هڪ صحيح آپشن __nopa __CODECOV -mcodecov بيان ڪيل آهي.
ميموري رزرويشن آپشن ڊرائيور ھاڻي قبول ڪندو xc8-cc -mreserve=space@start:end آپشن جڏھن AVR ٽارگيٽن لاءِ تعمير ڪيو وڃي. هي اختيار مخصوص ميموري رينج کي يا ته ڊيٽا يا پروگرام جي ميموري اسپيس ۾ محفوظ ڪري ٿو، لنڪر کي هن علائقي ۾ ڪوڊ يا شيون آباد ڪرڻ کان روڪي ٿو. سمارٽ سمارٽ IO سمارٽ IO ڪمن ۾ ڪيترائي سڌارا ڪيا ويا آھن، جن ۾ پرنٽ ايف ڪور ڪوڊ ۾ عام ٽوڪس، %n ڪنورشن اسپيسائيفر کي ھڪ آزاد ورجينٽ جي طور تي علاج ڪرڻ، مطالبن تي ورارگ پاپ روٽينز ۾ ڳنڍڻ، ھٿ ڪرڻ لاءِ جتي ممڪن ٿي سگھي ٿو گھٽ ڊيٽا جا قسم استعمال ڪندي IO فنڪشن دلائل، ۽ فئڪٽرنگ عام ڪوڊ فيلڊ جي چوٽي ۽ درست سنڀالڻ ۾. اهو نتيجو ٿي سگهي ٿو اهم ڪوڊ ۽ ڊيٽا جي بچت، انهي سان گڏ IO جي عمل جي رفتار کي وڌايو.
3.3. نسخو 2.39 (فنڪشنل سيفٽي رليز)
نيٽورڪ سرور لائسنس MPLAB XC8 فنڪشنل سيفٽي ڪمپلر جو هي رليز نيٽ ورڪ سرور لائسنس کي سپورٽ ڪري ٿو.
3.4. نسخو 2.36
ڪو به.
3.5. نسخو 2.35
نئين ڊوائيس سپورٽ سپورٽ ھيٺ ڏنل AVR حصن لاء دستياب آھي: ATTINY3224، ATTINY3226، ATTINY3227، AVR64DD14، AVR64DD20، AVR64DD28، ۽ AVR64DD32.
بهتر ڪيل حوالي سان مٽائڻ نئون -mcall-isr-prologues آپشن تبديل ڪري ٿو ته ڪيئن مداخلت وارا فنڪشن رجسٽرن کي داخلا تي محفوظ ڪن ٿا ۽ ڪيئن اهي رجسٽر بحال ٿين ٿا جڏهن مداخلت واري روٽين ختم ٿئي ٿي. اهو ساڳيو طريقي سان ڪم ڪري ٿو -mcall-prologues آپشن، پر صرف مداخلت افعال (ISRs) کي متاثر ڪري ٿو.
اڃا به وڌيڪ سڌريل ڪنيڪٽيٽ سوئچنگ نئون -mgas-isr-prologues آپشن ڪنٽرول ڪري ٿو ڪنٽيڪٽ سوئچ ڪوڊ کي ڪنٽرول ڪري ٿو جيڪو ننڍي وقفي جي سروس روٽين لاءِ ٺاهيل آهي. جڏهن فعال ڪيو ويندو، هن خاصيت کي گڏ ڪرڻ وارو هوندو ISR کي رجسٽر استعمال لاءِ اسڪين ۽ صرف انهن استعمال ٿيل رجسٽرن کي محفوظ ڪري جيڪڏهن گهربل هجي.
ڪنفيگريبل فليش ميپنگ AVR DA ۽ AVR DB فيملي ۾ ڪجھ ڊوائيسن وٽ SFR (مثال طور FLMAP) آھي جيڪو بيان ڪري ٿو ته پروگرام ميموري جو ڪھڙو 32k سيڪشن ڊيٽا ميموري ۾ ميپ ڪيو ويندو. نئون - mconst-data-in-config-mapped-progmem آپشن استعمال ڪري سگھجي ٿو لنڪر رکڻ لاءِ ھڪڙي 32k سيڪشن ۾ سڀني ڪانسٽ-قابليت واري ڊيٽا کي رکڻ لاءِ ۽ پاڻمرادو لاڳاپيل SFR رجسٽر کي شروع ڪرڻ کي يقيني بڻائڻ لاءِ ته ھن ڊيٽا کي ڊيٽا ميموري ۾ ميپ ڪيو ويو آھي. خلا، جتي ان کي وڌيڪ مؤثر طريقي سان پهچايو ويندو.
Microchip Unified Standard Libraries سڀ MPLAB XC مرتب ڪندڙ ھڪ Microchip Unified Standard Library کي شيئر ڪندا، جيڪو ھاڻي MPLAB XC8 جي ھن رليز سان دستياب آھي. MPLA# XC8 C Compiler User's Guide for AVO MCU ۾ ھاڻي انھن معياري ڪمن لاءِ دستاويز شامل نه آھن. ھي معلومات ھاڻي ملي سگھي ٿي Microchip Unified Standard Library Reference Guide ۾. نوٽ ڪريو ته avr-libc پاران بيان ڪيل ڪجھ ڪارڪردگي هاڻي موجود ناهي. (ڏسو ليلا ڪارڪردگي.)
Smart I0 نئين متحد لائبريرين جي حصي جي طور تي، printf ۽ scanf خاندانن ۾ I0 فنڪشن هاڻي هر بلڊ تي حسب ضرورت ٺاهيا ويا آهن، انهي بنياد تي ته اهي فنڪشن پروگرام ۾ ڪيئن استعمال ڪيا وڃن. اهو پروگرام پاران استعمال ڪيل وسيلن کي ڪافي حد تائين گھٽائي سگھي ٿو.
سمارٽ ICI مدد آپشن جڏهن سمارٽ I0 ڪمن کي ڪالز جو تجزيو ڪري رهيو آهي (جهڙوڪ پرنٽ f () يا scanf ())، ڪمپائلر هميشه فارميٽ اسٽرنگ مان اندازو نه ٿو لڳائي سگهي يا دليلن مان اندازو لڳائي سگهي ٿو اهي تبادلي جي وضاحت ڪندڙ ڪال لاءِ گهربل آهن. اڳي، گڏ ڪرڻ وارو هميشه ڪو به فرض نه ڪندو ۽ يقيني بڻائيندو ته مڪمل طور تي فنڪشنل 10 فنڪشنل فائنل پروگرام تصوير سان ڳنڍيل هئا. هڪ نئون - msmart-io-format=fmt آپشن شامل ڪيو ويو آهي ته جيئن ڪمپيلر بدران استعمال ڪندڙ تبادلي جي وضاحت ڪندڙن جي طرفان ڄاڻائي سگهجي ٿي سمارٽ I0 افعال جن جو استعمال مبهم آهي، تمام گهڻي ڊگهي 10 روٽين کي ڳنڍڻ کان روڪيو. (وڌيڪ تفصيل لاءِ smart-io-format آپشن ڏسو.)
ڪسٽم سيڪشن کي رکڻ اڳي، -W1، -section-start آپشن صرف مخصوص سيڪشن کي درخواست ڪيل ايڊريس تي رکي ٿو جڏهن لنڪر اسڪرپٽ ساڳئي نالي سان هڪ آئوٽ سيڪشن جي وضاحت ڪري ٿي. جڏهن اهو معاملو نه هو، سيڪشن کي لنڪر طرفان چونڊيل ايڊريس تي رکيو ويو ۽ اختيار کي لازمي طور تي نظر انداز ڪيو ويو. ھاڻي اختيار کي ساراھيو ويندو سڀني ڪسٽم سيڪشن لاء، جيتوڻيڪ لنڪر اسڪرپٽ سيڪشن جي وضاحت نٿو ڪري. نوٽ، جيتوڻيڪ، معياري حصن لاء، جهڙوڪ . متن، . بي ايس ايس يا. ڊيٽا، بهترين فٽ مختص ڪندڙ اڃا تائين انهن جي جڳهه تي مڪمل ڪنٽرول هوندو، ۽ اختيار جو ڪو اثر نه ٿيندو. استعمال ڪريو -ton, -Tsection=addr آپشن، جيئن استعمال ڪندڙ جي گائيڊ ۾ بيان ڪيو ويو آھي.
3.6. نسخو 2.32
اسٽيڪ گائيڊنس هڪ PRO ڪمپيلر لائسنس سان دستياب آهي، ڪمپلر جي اسٽيڪ گائيڊنس فيچر استعمال ڪري سگهجي ٿي پروگرام جي استعمال ڪيل ڪنهن به اسٽيڪ جي وڌ ۾ وڌ کوٽائي جو اندازو لڳائڻ لاءِ. اهو هڪ پروگرام جي ڪال گراف کي تعمير ۽ تجزيو ڪري ٿو، هر فنڪشن جي اسٽيڪ استعمال کي طئي ڪري ٿو، ۽ هڪ رپورٽ ٺاهي ٿو، جنهن مان پروگرام پاران استعمال ڪيل اسٽيڪ جي کوٽائي جو اندازو لڳائي سگهجي ٿو. ھي فيچر فعال ڪيو ويو آھي -mchp-stack-usage ڪمانڊ لائن آپشن ذريعي. اسٽيڪ استعمال جو خلاصو عمل کان پوء ڇپيل آهي. هڪ تفصيلي اسٽيڪ رپورٽ نقشي ۾ موجود آهي file، جنهن کي عام طريقي سان عرض ڪري سگهجي ٿو.
نئين ڊيوائس سپورٽ سپورٽ ھيٺ ڏنل AVR حصن لاءِ موجود آھي: ATTINY427، ATTINY424، ATTINY426، ATTINY827، ATTINY824، ATTINY826، AVR32DB32، AVR64DB48، AVR64DB64، AVR64DB28، AVR32BAVR28، AVR64DB32 32، ۽ AVR48DB16. واپس ڪيل ڊوائيس سپورٽ سپورٽ ھيٺ ڏنل AVR حصن لاء دستياب نه آھي: AVR28DA16، AVR32DA16 ۽، AVR48DAXNUMX.
3.7. نسخو 2.31
ڪو به.
3.8. نسخو 2.30
ڊيٽا جي شروعات کي روڪڻ لاءِ نئون آپشن ھڪڙو نئون -mno-data-init ڊرائيور آپشن ڊيٽا جي شروعات ۽ بي ايس ايس سيڪشن کي صاف ڪرڻ کي روڪي ٿو. اهو ڪم ڪري ٿو ڊيو ڪاپي ڊيٽا جي آئوٽ کي دٻائڻ ۽ اسيمبلي ۾ بي ايس ايس جي نشانين کي صاف ڪرڻ files، جيڪو موڙ ۾ لنڪر پاران انهن معمولن کي شامل ڪرڻ کان روڪيندو.
بهتر ڪيل اصلاحون ڪيتريون ئي اصلاحون ڪيون ويون آھن، جن ۾ بيڪار موٽڻ وارين ھدايتن کي ختم ڪرڻ، skip-if-bit-is جي ھدايتن جي پٺيان ڪجھ جمپز کي ختم ڪرڻ، ۽ بھتر طريقياتي تجريد ۽ ھن عمل کي ٻيهر ورجائڻ جي صلاحيت شامل آھي. اضافي اختيارات ھاڻي موجود آھن انھن مان ڪجھ اصلاحن کي ڪنٽرول ڪرڻ لاءِ، خاص طور تي -f سيڪشن-اينڪرز، جيڪي جامد شين جي رسائي کي ھڪڙي علامت جي نسبت سان انجام ڏيڻ جي اجازت ڏين ٿا؛ -mpa-iterations=n، جيڪا اجازت ڏئي ٿي ته طريقيڪار جي تجريد جي تعداد کي 2 جي ڊفالٽ مان تبديل ڪيو وڃي؛ ۽، -mpa-callcost-shortcall، جيڪو وڌيڪ جارحاڻي طريقي وارو خلاصو انجام ڏئي ٿو، انهي اميد ۾ ته لنڪر ڊگهي ڪالن کي آرام ڪري سگهي ٿو. هي آخري آپشن ڪوڊ جي سائيز کي وڌائي سگھي ٿو جيڪڏھن ھيٺين مفروضن کي محسوس نه ڪيو وڃي.
نئين ڊوائيس سپورٽ سپورٽ ھيٺ ڏنل AVR حصن لاء دستياب آھي: AVR16DA28، AVR16DA32، AVR16DA48، AVR32DA28، AVR32DA32، AVR32DA48، AVR64DA28، AVR64DA32، AVR64DA48، AVR64DA64، AVR128DA28، AVR128DA32، 128DB48، AVR128DB64، ۽ AVR5272DB5790. منتٽ Pact 5790. اي-P.5791، OB5795 -6285 '، ايبو "6286'، ايٽو 6612 '6613'، Oct 6614C '، Out6616C'A، ANAC'A'A، ANAC'ALT'A، ANAC'ALT'A، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، ANATALEA، Act 6617'A، ANATALEA، AtA664251 XNUMX، ANATEAXNUMX-XNUMX
3.9. نسخو 2.29 (فنڪشنل سيفٽي رليز)
مٿو file ڪمپيلر بلٽ انز لاءِ ان ڳالهه کي يقيني بڻائڻ لاءِ ته ڪمپلر ٻوليءَ جي وضاحتن سان مطابقت رکي ٿو جهڙوڪ MISRA، هيڊر file، جيڪو خودڪار طور تي شامل ڪيو ويو آهي ، اپڊيٽ ڪيو ويو آهي. هي هيڊر سڀني اندر تعمير ٿيل ڪمن لاءِ پروٽوٽائپس تي مشتمل آهي، جهڙوڪ buildin_avr_nop ( ) ۽ buildin avr delay_cycles () . ڪجھ بلٽ ان MISRA مطابق نه ھجن. انهن کي ختم ڪري سگھجي ٿو defineXCSTRICT_MISRA کي گڏ ڪرڻ واري ڪمانڊر لائن ۾. بلٽ انز ۽ انهن جي اعلانن کي اپڊيٽ ڪيو ويو آهي مقرر ٿيل چوٽي جي قسمن کي استعمال ڪرڻ لاءِ.
3.10. نسخو 2.20
نئين ڊوائيس سپورٽ سپورٽ ھيٺ ڏنل AVR حصن لاء دستياب آھي: ATTINY1624، ATTINY1626، ۽ ATTINY1627.
بهتر بھترين فِٽ مختص ڪَپائيلر ۾ بھترين فِٽ مختص ڪندڙ (BFA) کي بھتر ڪيو ويو آھي ته جيئن سيڪشنز کي ترتيب ۾ مختص ڪيو وڃي ته جيئن بھتر اصلاح جي اجازت ملي. BFA ھاڻي نالي واري ايڊريس اسپيس کي سپورٽ ڪري ٿو ۽ ڊيٽا جي شروعات کي بھتر سنڀاليندو آھي.
بهتر ڪيل طريقيڪار تجزيه: طريقيڪار تجزيه جي اصلاح هاڻي وڌيڪ ڪوڊ جي ترتيبن تي ڪئي وئي آهي. اڳيون حالتون جتي هي اصلاح ٿي سگھي ٿي ڪوڊ جي سائيز ۾ اضافو ڪيو ويو آهي اصلاحي ڪوڊ کي لنڪر جي گندگي گڏ ڪرڻ جي عمل کان آگاهي ڪندي.
AVR اسمبلر جي غير موجودگي AVR اسمبلر ھاڻي ھن تقسيم ۾ شامل نه آھي.
3.11. نسخو 2.19 (فنڪشنل سيفٽي رليز)
ڪو به.
3.12. نسخو 2.10
ڪوڊ ڪوريج ھن رليز ۾ ھڪڙي ڪوڊ ڪوريج جي خصوصيت شامل آھي جيڪا ان حد تائين تجزيو ڪرڻ ۾ مدد ڪري ٿي جنھن تي پروجيڪٽ جي سورس ڪوڊ تي عمل ڪيو ويو آھي. ان کي فعال ڪرڻ لاءِ اختيار استعمال ڪريو -mcodecov=ram. توهان جي هارڊويئر تي پروگرام جي عمل کان پوء، ڪوڊ ڪوريج جي معلومات کي ڊوائيس ۾ گڏ ڪيو ويندو، ۽ اهو منتقل ڪري سگهجي ٿو ۽ ايم پي ايل بي ايڪس IDE ذريعي ڏيکاريل ڪوڊ ڪوريج پلگ ان ذريعي. هن پلگ ان تي معلومات حاصل ڪري سگهجي ٿو لاء IDE دستاويز ڏسو. #pragma nocodecov استعمال ٿي سگھي ٿو ايندڙ ڪمن کي ڪوريج تجزيي کان خارج ڪرڻ لاءِ. مثالي طور pragma جي شروعات ۾ شامل ڪيو وڃي file انهي سڄي کي خارج ڪرڻ لاء file ڪوريج جي تجزيي کان. متبادل طور تي، _attribute_ ( (nocodecov) ) استعمال ٿي سگھي ٿو ھڪڙي خاص فنڪشن کي ڪوريج جي تجزيي مان خارج ڪرڻ لاءِ.
ڊوائيس جي وضاحت files هڪ نئون ڊوائيس file avr_chipinfo سڏيو ويندو آهي. html compiler distribution جي docs ڊاريڪٽري ۾ واقع آهي. هي file سڀني ڊوائيسن کي لسٽ ڪري ٿو جيڪو ڪمپلر جي مدد سان. ھڪڙي ڊوائيس جي نالي تي ڪلڪ ڪريو، ۽ اھو ھڪڙو صفحو کوليندو جيڪو ڏيکاريندو آھي سڀ قابل اجازت ترتيب واري ترتيب واري بٽ سيٽنگ / قدر درد ان ڊوائيس لاء، اڳوڻي سان.amples. طريقيڪار خلاصو
پروسيسرل تجزيه اصلاحون، جيڪي عام بلاڪ جي اسمبلي ڪوڊ کي تبديل ڪن ٿيون ڪالن سان گڏ انهي بلاڪ جي ڪڍيل ڪاپي کي، ڪمپلر ۾ شامل ڪيو ويو آهي. اهي هڪ الڳ ايپليڪيشن ذريعي ڪيا ويا آهن، جيڪو خودڪار طور تي مرتب ڪندڙ طرفان سڏيو ويندو آهي جڏهن سطح 2، 3 يا s اصلاحن کي چونڊيو وڃي. اهي اصلاحون ڪوڊ جي سائيز کي گھٽائي ٿي، پر اهي شايد عمل جي رفتار ۽ ڪوڊ ڊيبگيبلٽي کي گھٽائي سگھن ٿيون. طريقيڪار جي تجزيي کي -mno-pa اختيار استعمال ڪندي اعلي اصلاحي سطحن تي غير فعال ڪري سگھجي ٿو، يا -mpa استعمال ڪندي هيٺين اصلاح جي سطح (توهان جي لائسنس جي تابع) تي فعال ڪري سگھجي ٿو. اهو هڪ اعتراض لاء بند ڪري سگهجي ٿو file استعمال ڪندي -mno-pa-on-file=fileنالو، يا -mno-pa-on-function=function استعمال ڪندي فنڪشن لاءِ بند ڪيو ويو. توهان جي ماخذ ڪوڊ جي اندر، طريقياتي تجزيي کي فعل جي تعريف سان منسوب ( (nopa) ) استعمال ڪندي، يا nopa استعمال ڪندي، فعل لاءِ غير فعال ٿي سگھي ٿو، جيڪو وصف ( (nopa، noinline)) تائين وڌايو وڃي ٿو ۽ اهڙيءَ طرح فنڪشن ان لائننگ کي ٿيڻ کان روڪي ٿو. ۽ اتي موجود ڪوڊ جو خلاصو.
pragma ۾ لاڪ بٽ سپورٽ #pragma config ھاڻي استعمال ڪري سگھجي ٿو AVR لاڪ بٽس ۽ ٻين ڪنفيگريشن بِٽس کي بيان ڪرڻ لاءِ. چيڪ ڪريو avr_chipinfo. html file (مٿي ذڪر ڪيو ويو آهي) هن pragma سان استعمال ڪرڻ لاء سيٽنگ / قدر جوڙو لاء. نئين ڊوائيس سپورٽ سپورٽ هيٺين حصن لاء دستياب آهي: AVR28DAl28، AVR64DAl28، AVR32DA 128، ۽ AVR48DA 128.
3.13. نسخو 2.05
توهان جي بڪ لاءِ وڌيڪ بِٽ هن ڪمپلر ۽ لائسنس مئنيجر جو macOS ورزن هاڻي 64-bit ايپليڪيشن آهي. اهو يقيني بڻائيندو ته گڏ ڪرڻ وارو انسٽال ڪندو ۽ هلائيندو بغير ڊيڄاريندڙ MacOS جي تازي ورزن تي.
پروگرام ميموري ۾ ڪانسٽ آبجیکٹس ڪمپائلر ھاڻي پروگرام فليش ميموري ۾ ڪانسٽ لائق شيون رکي سگھي ٿو، بجاءِ انھن کي RAM ۾ رکڻ جي. ڪمپيلر کي تبديل ڪيو ويو آهي ته جيئن قابليت رکندڙ عالمي ڊيٽا پروگرام فليش ميموري ۾ محفوظ ٿي وڃي ۽ هن ڊيٽا کي سڌو ۽ اڻ سڌي طرح استعمال ڪري سگهجي ٿو مناسب پروگرام-ميموري هدايتون استعمال ڪندي. ھي نئون فيچر ڊفالٽ طور فعال ڪيو ويو آھي پر -mno-const-data-in-progmem آپشن کي استعمال ڪندي غير فعال ڪري سگھجي ٿو. avrxmega3 ۽ avrtiny architectures لاءِ، ھي خصوصيت گھربل نه آھي ۽ ھميشه غير فعال آھي، ڇو ته پروگرام ميموري انھن ڊوائيسز لاءِ ڊيٽا ايڊريس اسپيس ۾ ميپ ٿيل آھي.
معياري لاءِ مفت غير لائسنس يافته (مفت) ورجن هن ڪمپيلر جا هاڻي بهتر ڪرڻ جي اجازت ڏين ٿا ۽ ان ۾ ليول 2 تائين شامل آهن. هي اجازت ڏئي ٿو هڪ جهڙو، جيتوڻيڪ هڪجهڙو نه، ان جي پيداوار جيڪا اڳي معياري لائسنس استعمال ڪندي ممڪن هئي.
ڀليڪار AVRASM2 2-bit ڊوائيسز لاءِ AVRASM8 اسمبلر هاڻي XC8 ڪمپلر انسٽالر ۾ شامل ڪيو ويو آهي. هي اسمبلر XC8 ڪمپلر طرفان استعمال نه ڪيو ويو آهي، پر هٿ سان لکيل اسيمبلي ذريعن جي بنياد تي منصوبن لاءِ دستياب آهي.
نئين ڊوائيس سپورٽ سپورٽ هيٺين حصن لاء دستياب آهي: ATMEGA1608، ATMEGA1609، ATMEGA808، ۽ ATMEGA809.
3.14. نسخو 2.00
ٽاپ-ليول ڊرائيور ھڪڙو نئون ڊرائيور، جنھن کي xc8-cc سڏيو ويندو آھي، ھاڻي اڳئين avr-gcc ڊرائيور ۽ xc8 ڊرائيور کان مٿي آھي، ۽ اھو ٽارگيٽ ڊيوائس جي چونڊ جي بنياد تي مناسب ڪمپلر کي سڏي سگھي ٿو. هي ڊرائيور GCC طرز جي اختيارن کي قبول ڪري ٿو، جيڪي يا ته ترجمو ڪيا ويا آهن يا مرتب ڪيل ڪمپيلر ڏانهن منتقل ڪيا ويا آهن. هي ڊرائيور اجازت ڏئي ٿو اختيارن جي هڪجهڙائي سيٽن سان هڪجهڙا سيمينٽڪس ڪنهن به AVR يا PIC ٽارگيٽ سان استعمال ڪرڻ لاءِ ۽ اهڙيءَ طرح ڪمپلر کي سڏڻ جو تجويز ڪيل طريقو آهي. جيڪڏهن گهربل هجي، پراڻي avr-gcc ڊرائيور کي سڌو سنئون استعمال ڪري سگهجي ٿو پراڻي طرز جي اختيارن کي استعمال ڪندي ان کي اڳوڻي ڪمپيلر ورزن ۾ قبول ڪيو ويو.
ڪمن سي انٽرفيس ھي ڪمپلر ھاڻي MPLAB ڪمن سي انٽرفيس سان مطابقت رکي سگھي ٿو، سورس ڪوڊ کي وڌيڪ آساني سان سڀني MPLAB XC ڪمپيلرز ۾ پورٽ ڪرڻ جي اجازت ڏئي ٿو. -mext=cci آپشن هن خصوصيت جي درخواست ڪري ٿو، ڪيترن ئي ٻولين جي واڌارن لاء متبادل نحو کي فعال ڪرڻ.
نئون لائبرري ڊرائيور هڪ نئون لائبرري ڊرائيور پوئين PIC لائبريرين ۽ AVR avr-ar لائبريرين جي مٿان رکيل آهي. هي ڊرائيور GCC-archiver طرز جي اختيارن کي قبول ڪري ٿو، جيڪي يا ته ترجمو ڪيا ويا آهن يا لائبريرين ڏانهن منتقل ڪيا ويا آهن. نون ڊرائيور کي اجازت ڏئي ٿو ته اختيارن جي ساڳي سيٽ سان ملندڙ اصطلاحن کي استعمال ڪرڻ لاءِ استعمال ڪيو وڃي ڪنهن به PIC يا AVR لائبريري کي ٺاهڻ يا ترتيب ڏيڻ لاءِ file ۽ اهڙيءَ طرح لائبريرين کي سڏڻ جو تجويز ڪيل طريقو آهي. جيڪڏهن گهربل پراجيڪٽس لاءِ گهربل هجي، ته پوئين لائبريرين کي سڌو سنئون سڏيو وڃي ٿو پراڻي طرز جا اختيار استعمال ڪندي جيڪي اڳئين مرتب ورزن ۾ قبول ڪيا ويا هئا.
لڏپلاڻ جا مسئلا
ھيٺيون خاصيتون آھن جيڪي ھاڻي مختلف طريقي سان گڏ ڪن ٿيون. انهن تبديلين کي شايد توهان جي سورس ڪوڊ ۾ ترميم جي ضرورت هجي جيڪڏهن ڪوڊ هن ڪمپلر ورزن ڏانهن پورٽ ڪيو وڃي. ذيلي عنوانن ۾ ورجن نمبر اشارو ڪري ٿو پھرين مرتب ڪندڙ ورزن کي سپورٽ ڪرڻ لاءِ تبديلين جي پٺيان.
4.1. نسخو 2.41
غلط fma افعال هٽايو ويو (XC8-2913) C99 معياري لائبريري fma 0 -خانداني افعال ( ) هڪ واحد گولنگ ۾ لامحدود درستگي سان ضرب-اضافو نه ڪيو، پر ان جي بدران هر آپريشن سان گڏ گولن جي غلطين کي گڏ ڪيو. انهن فنڪشن کي فراهم ڪيل لائبريري مان هٽايو ويو آهي.
4.2. نسخو 2.40
ڪو به.
4.3. نسخو 2.39 (فنڪشنل سيفٽي رليز)
ڪو به.
4.4. نسخو 2.36 ڪوبه نه.
4.5. نسخو 2.35
اسٽرنگ ٽو بيسز کي سنڀالڻ (XC8-2420) ٻين XC ڪمپيلرز سان مطابقت کي يقيني بڻائڻ لاءِ، XC8 اسٽرنگ کان افعال، جهڙوڪ strtol () وغيره، هاڻي ان پٽ اسٽرنگ کي تبديل ڪرڻ جي ڪوشش نه ڪندا جيڪڏهن بيان ڪيل بنياد 36 کان وڏو آهي. ۽ بدران errno کي EINVAL تي سيٽ ڪندو. سي معيار جي ڪارڪردگي جي رويي کي بيان نه ڪندو آهي جڏهن هي بنيادي قيمت وڌي وڃي ٿي.
نامناسب رفتار جي اصلاح ليول 3 اصلاحن (-03) کي منتخب ڪرڻ وقت طريقيڪار تجزيي جي اصلاح کي فعال ڪيو پيو وڃي. اهي اصلاحون ڪوڊ جي سائيز کي گھٽائي ٿي ڪوڊ جي رفتار جي خرچ تي، تنهنڪري نه ڪيو وڃي ها. هن اصلاح جي سطح کي استعمال ڪندي پروجيڪٽ شايد ڪوڊ سائيز ۽ عمل جي رفتار ۾ فرق ڏسي سگھن ٿا جڏهن هن رليز سان ٺهيل آهي.
لائبريري ڪارڪردگي ڪيترن ئي معياري سي لائبريري جي ڪمن جو ڪوڊ هاڻي مائڪروچپ جي يونيفائيڊ معياري لائبريري مان اچي ٿو، جيڪو شايد اڳوڻي avr-libc لائبريري جي مهيا ڪيل مقابلي ۾ ڪجهه حالتن ۾ مختلف رويي کي ڏيکاري ٿو. مثال طورampلي، فارميٽ کي چالو ڪرڻ لاءِ 1printf flt لائبريري (-1printf_flt آپشن) ۾ ڳنڍڻ ضروري ناهي I0 float-format specifiers لاءِ سپورٽ. هوشيار I0 مائڪروچپ يونيفائيڊ معياري لائبريري جون خاصيتون هن آپشن کي بيڪار بڻائي ٿي. اضافي طور تي، اسٽرنگ ۽ ميموري جي ڪمن لاءِ _P لاحق روٽين جو استعمال (مثال طور strcpy_P ( ) وغيره.) جيڪي فليش ۾ const strings تي هلن ٿا، هاڻي ضروري نه آهن. معياري سي روٽينس (مثال طور strcpy ) اهڙي ڊيٽا سان صحيح ڪم ڪنديون جڏهن const-data-in-program-memory فيچر فعال هوندو.
4.6. نسخو 2.32
ڪو به.
4.7. نسخو 2.31
ڪو به.
4.8. نسخو 2.30
ڪو به.
4.1. نسخو 2.29 (فنڪشنل سيفٽي رليز)
ڪو به.
4.2. نسخو 2.20
تبديل ٿيل DFP ترتيب گڏ ڪرڻ وارو هاڻي DFPs (ڊيوائس فيملي پيڪ) پاران استعمال ڪيل مختلف ترتيب کي فرض ڪري ٿو. هن جو مطلب اهو ٿيندو ته هڪ پراڻو DFP شايد هن رليز سان ڪم نه ڪري سگهي، ۽ پراڻا مرتب ڪندڙ جديد ڊي ايف پي استعمال ڪرڻ جي قابل نه هوندا.
4.3. نسخو 2.19 (فنڪشنل سيفٽي رليز)
ڪو به.
4.4. نسخو 2.10
ڪو به
4.5. نسخو 2.05
پروگرام ميموري ۾ Const شيون نوٽ ڪريو ته ڊفالٽ طور، const-qualfiied شيون رکيا ويندا ۽ پروگرام ميموري ۾ پهچايا ويندا (جيئن بيان ڪيل رنگ). اهو توهان جي منصوبي جي سائيز ۽ عمل جي رفتار کي متاثر ڪندو، پر رام جي استعمال کي گهٽائڻ گهرجي. هن خصوصيت کي غير فعال ڪري سگهجي ٿو، جيڪڏهن گهربل هجي، استعمال ڪندي -mnoconst-data-in-progmem اختيار.
4.6. نسخو 2.00
ڪنفيگريشن فيوز ڊيوائس ڪنفيگريشن فيوز ھاڻي پروگرام ڪري سگھجن ٿا ڪنفيگريشن پراگما استعمال ڪندي ان کان پوءِ فيوز جي حالت کي بيان ڪرڻ لاءِ سيٽنگ-ويليو جوئر، مثال طور
#pragma config WDTON = سيٽ
#pragma config BODLEVEL = BODLEVEL_4V3
مطلق شيون ۽ افعال شيون ۽ افعال ھاڻي ميموري ۾ مخصوص ايڊريس تي رکي سگھجن ٿا سي سي آءِ (ايڊريس) اسپيفائير استعمال ڪندي، اڳ لاءِampاليزي:
#شامل
int foobar_at(0x800100)؛
char __at(0x250) getID (int offset) { … }
هن وضاحت ڪندڙ لاء دليل هجڻ گهرجي هڪ مستقل جيڪو پتي جي نمائندگي ڪري ٿو جنهن تي پهريون بائيٽ يا هدايتون رکيل هونديون. RAM پتا 0x800000 جي آفسيٽ استعمال ڪندي ظاهر ڪيا ويا آھن. CCI کي فعال ڪريو ھن خصوصيت کي استعمال ڪرڻ لاءِ.
نئون مداخلت فنڪشن نحو گڏ ڪرڻ وارو هاڻي CCI _interrupt (num) وضاحت ڪندڙ کي قبول ڪري ٿو اهو ظاهر ڪرڻ لاءِ ته C افعال مداخلت وارا هينڊلر آهن. وضاحت ڪندڙ هڪ مداخلت نمبر وٺندو آهي، مثال طورampاليزي:
#شامل
void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }
مقرر ٿيل مسئلا
هيٺيون تصحيحون ڪيون ويون آھن جيڪي ڪمپيلر ۾ ڪيون ويون آھن. اهي ٺاهيل ڪوڊ ۾ بگ کي درست ڪري سگھن ٿا يا ڪمپلر جي آپريشن کي تبديل ڪري سگھن ٿا جيڪو ارادو ڪيو ويو يا صارف جي گائيڊ طرفان بيان ڪيو ويو. ذيلي عنوانن ۾ ورجن نمبر اشارو ڪري ٿو پهريون ڪمپلر ورزن جنهن جي پٺيان مسئلن لاءِ فيڪس شامل آهن. عنوان ۾ بریکٹ ٿيل ليبل (س) آهن انهي مسئلي جي سڃاڻپ ٽريڪنگ ڊيٽابيس ۾. اهي مفيد ٿي سگهن ٿيون جيڪڏهن توهان کي مدد سان رابطو ڪرڻ جي ضرورت آهي.
نوٽ ڪريو ته ڊوائيس سان لاڳاپيل ڊيوائس فيملي پيڪ (DFP) ۾ ڪجهه ڊوائيس مخصوص مسئلا درست ڪيا ويا آهن. ڏسو MPLAB پيڪ مئنيجر DFPs ۾ ڪيل تبديلين بابت معلومات لاءِ ۽ جديد پيڪ ڊائون لوڊ ڪرڻ لاءِ.
5.1. نسخو 2.41
وينٽورا (XC8-3088) ڊونگل تي ڊونگل مسئلا ڪمپلر کي لائسنس ڏيڻ لاءِ استعمال ڪيو ويو شايد صحيح طريقي سان نه پڙهيو ويو هجي MacOS Ventura ميزبانن تي، نتيجي ۾ لائسنس جي ناڪامي. XCLM لائسنس مينيجر ۾ تبديليون هن مسئلي کي درست ڪن ٿيون.
ميموري مختص ڪرڻ جو غلط اشارو (XC8-2925) ميموري جي SIZE_MAX بائيٽ (يا ان جي ويجهو قدر) مختص ڪرڻ جي ڪوشش معياري لائبريري ميموري مئنيجمينٽ فنڪشن استعمال ڪندي (malloc () et al) غلط طريقي سان ڪامياب ٿي. اهو حساب ۾ نه ورتو ويو ته اضافي بائيٽ جي ضرورت هئي بلاڪ جي اضافي ۾ جڏهن سادي متحرڪ ميموري مختص عمل کي استعمال ڪندي. ھڪڙو NULL پوائنٽر ھاڻي واپس ڪيو ويندو ۽ اھڙين حالتن ۾ ENOMEM تي غلطي مقرر ڪئي ويندي.
غلط fma افعال کي هٽايو ويو (XC8-2913) C99 معياري لائبريري fma ( ) - خانداني افعال ( ) هڪ واحد گولنگ ۾ لامحدود درستگي سان ضرب-اضافو نه ڪيو، پر ان جي بدران هر آپريشن سان گڏ گولن جي غلطين کي گڏ ڪيو. انهن فنڪشن کي فراهم ڪيل لائبريري مان هٽايو ويو آهي.
اسٽرنگ جي تبادلي جو خراب انتظام (XC8-2921, XC8-2652) جڏهن strtod Cr جي تبديليءَ لاءِ هڪ ’موضوع جي ترتيب‘ تي مشتمل هوندو هو جيڪو ظاهري شڪل ۾ هڪ سچل پوائنٽ نمبر هوندو هو ۽ e/E اکر کان پوءِ هڪ اڻڄاتل اکر هوندو هو، ته پوءِ جتي endptr مهيا ڪيو ويو هوندو هو، ان کي هڪ پتو لڳايو ويو هو ته ان کي e/E کان پوءِ ڪردار ڏانهن اشارو ڪيو ويو هو، جڏهن ته اهو خود e/E ڪردار ڏانهن اشارو ڪيو وڃي ها، ڇاڪاڻ ته اهو تبديل نه ڪيو ويو هو. مثال طورample, strtod (“100exx”, &ep) کي 100.00 موٽڻ گھرجي ۽ ep کي اسٽرنگ جي ”exx“ حصي ڏانھن اشارو ڪرڻ لاءِ سيٽ ڪرڻ گھرجي، جڏھن ته فنڪشن صحيح قدر واپس ڪري رھيو ھو پر ep سيٽنگ ڪري string جي ”xx“ حصي ڏانھن اشارو ڪري. .
5.2. نسخو 2.40
ڏاڍو آرامده (XCS-2876) جڏهن استعمال ڪندي -mrelax آپشن، گڏ ڪرڻ وارو ڪجهه حصن کي گڏ نه ڪري رهيو هو، نتيجي ۾ گهٽ بهتر ڪوڊ سائيز. اهو ٿي سگهي ٿو ڪوڊ سان جيڪو نئين MUSL لائبريري استعمال ڪيو يا ڪمزور علامتن سان.
نقشي سازي جي خصوصيت غير فعال نه ڪئي وئي جيئن خبرداري ۾ بيان ڪيو ويو آهي (XC8-2875) const-data-in-config-mappedprogmem خصوصيت const-data-in-progmem جي فعال ٿيڻ واري خصوصيت تي منحصر آهي. جيڪڏهن const-data-inconfig-mapped-progmem خصوصيت واضح طور تي اختيار استعمال ڪندي فعال ڪئي وئي هئي ۽ const-data-inprogmem خصوصيت کي غير فعال ڪيو ويو هو، ته لنڪ قدم ناڪام ٿي ويو، هڪ خبرداري پيغام جي باوجود اهو بيان ڪيو ويو آهي ته const-data-in-con fig- mapped-progmem خصوصيت خودڪار طريقي سان غير فعال ٿي چڪي هئي، جيڪا مڪمل طور تي درست نه هئي. هن صورتحال ۾ const-data-in-config-mapped-progmem فيچر هاڻي مڪمل طور تي غير فعال آهي.
DFP صحيح طور تي NVMCTRL (XC8-2848) تائين رسائي لاءِ تبديليون AVR64EA ڊوائيسز پاران استعمال ڪيل رن ٽائم شروعاتي ڪوڊ ان ڳالهه ۾ نه ورتو ويو ته NVMCTRL رجسٽرڊ ڪنفيگريشن چينج پروٽيڪشن (سي سي پي) جي تحت هو ۽ I0 SFR کي سيٽ ڪرڻ جي قابل نه هو انهي صفحي تي جيڪو استعمال ڪيو ويو const-data-in-configmapped-progmem ڪمپيلر خصوصيت. AVR-Ex_DFP ورزن 2.2.55 ۾ ڪيل تبديليون رن ٽائم شروع ڪرڻ واري ڪوڊ کي صحيح طور تي ھن رجسٽر ۾ لکڻ جي اجازت ڏين ٿيون.
DFP تبديلين کان بچڻ لاء فليش ميپنگ (XC8-2847) AVR128DA28/32/48/64 Silicon Errata (D580000882) ۾ ڄاڻايل فليش ميپنگ ڊيوائس فيچر جي مسئلي لاءِ هڪ ڪم جي چوڌاري عمل ڪيو ويو آهي. const-data-in-config-mapped-progmem compiler خاصيت متاثر ٿيل ڊوائيسز لاءِ ڊفالٽ طور لاڳو نه ٿيندي، ۽ اها تبديلي AVR-Dx_DFP ورزن 2.2.160 ۾ ظاهر ٿيندي.
sinhf يا coshf سان غلطي ٺاھيو (XC8-2834) sinhf () يا coshf () لائبريري جي ڪمن کي استعمال ڪرڻ جي ڪوشش جي نتيجي ۾ ھڪڙي ڳنڍ جي غلطي ٿي، ھڪڙي اڻ ڄاڻايل حوالن کي بيان ڪندي. غائب ٿيل فنڪشن جو حوالو ھاڻي شامل ڪيو ويو آھي مرتب ڪندڙ تقسيم ۾.
nopa سان غلطيون ٺاھيو (XC,8-2833) nopa انتساب کي هڪ فنڪشن سان استعمال ڪندي جنهن ۾ ان جي اسمبلر جو نالو بيان ڪيو ويو آهي asm ( ) استعمال ڪندي اسمبلر کان غلطي پيغام شروع ڪيو. هي ميلاپ ممڪن ناهي.
پوائنٽر دليلن سان متغير فنڪشن ناڪامي (XC8-2755، XC8-2731) 24-bit (memx ٽائيپ) پوائنٽرز کي variable دليلن جي لسٽ ۾ پاس ڪرڻ جي اميد رکي ٿو، جڏهن const-data-in-progmem خصوصيت فعال ٿئي ٿي. دليل جيڪي ڊيٽا ميموري ڏانهن اشارو ڪري رهيا هئا 16-bit شين جي طور تي گذري رهيا هئا، ڪوڊ ناڪامي سبب جڏهن اهي آخرڪار پڙهيا ويا. جڏهن constdata-in-progmem خصوصيت کي فعال ڪيو ويندو آهي، سڀ 16-bit پوائنٽر دليل هاڻي 24-bit پوائنٽرز ۾ تبديل ڪيا ويا آهن.
strtoxxx لائبريري جا ڪم ناڪام (XC8-2620) جڏهن const-data-in-progmem فيچر کي فعال ڪيو ويو، strtoxxx لائبريري جي ڪمن ۾ endptr پيراميٽر صحيح طريقي سان اپڊيٽ نه ڪيو ويو آهي ماخذ اسٽرنگ دليلن لاءِ جيڪي پروگرام ميموري ۾ نه آهن.
غلط ڪاسٽن لاءِ الرٽ (XC8-2612) ڪمپلر هاڻي هڪ غلطي جاري ڪندو جيڪڏهن const-in-progmem فيچر کي فعال ڪيو ويو آهي ۽ هڪ اسٽرنگ لٽريريل جو پتو واضح طور تي ڊيٽا ايڊريس اسپيس ڏانهن اڇلايو ويندو آهي (ڪانسٽ قابليت کي ڇڏڻ) لاءِ.ample، (uint 8_t *) "هيلو ورلڊ!". هڪ ڊيڄاريندڙ مسئلو آهي جيڪڏهن ايڊريس غلط ٿي سگهي ٿي جڏهن ڪاسٽ ڊيٽا پوائنٽر واضح طور تي ڊيٽا ايڊريس اسپيس ڏانهن اڇلائي وئي آهي.
اڻڄاتل ڪانسٽ شين جي جاءِ (XC8-2408) Uninitiialized const ۽ const volatile شيون انهن ڊوائيسز تي پروگرام ميموري ۾ نه رکيا ويندا هئا جيڪي انهن جي پروگرام جي ميموري جو سڄو يا حصو ڊيٽا ايڊريس اسپيس ۾ نقشي ۾ ٺاهيندا آهن. انهن ڊوائيسز لاء، اهڙيون شيون هاڻي پروگرام ميموري ۾ رکيل آهن، انهن جي آپريشن کي ٻين ڊوائيسز سان گڏ ٺاهيندي.
5.3. نسخو 2.39 (فنڪشنل سيفٽي رليز)
ڪو به.
5.4. نسخو 2.36
دير ڪرڻ ۾ غلطي (XC8-2774) ڊفالٽ فري موڊ جي اصلاحن ۾ معمولي تبديليون اوپيرينڊ ايڪسپريسز جي مسلسل فولڊنگ کي تاخير ۾ بلٽ ان افعال کي روڪيو، نتيجي ۾ انھن کي غير مستقل سمجھيو پيو وڃي ۽ نقص کي ٽاريو پيو وڃي: بلٽ ان avr delay_cycles توقع رکي ٿو ھڪڙي مرتب وقت جي انٽيگر مستقل.
5.5. نسخو 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) The -W1، -section-start option خاموشيءَ سان سيڪشنز کي نامزد ٿيل شروعاتي ايڊريس تي رکڻ ۾ ناڪام ٿي ويو. هي مسئلو مقرر ڪيو ويو آهي ڪنهن به ڪسٽم نالي سيڪشن لاءِ؛ بهرحال، اهو ڪنهن به معياري حصن لاءِ ڪم نه ڪندو، جهڙوڪ. متن يا. bss، جيڪو هڪ -W1، -T اختيار استعمال ڪندي رکيل هجي.
لنڪر تباھ ٿي ويو جڏھن آرام ڪيو (XC8-2647) جڏھن -mrelax اصلاح کي چالو ڪيو ويو ۽ ڪوڊ يا ڊيٽا جا حصا آھن جيڪي دستياب ميموري ۾ مناسب نه آھن، لنڪر خراب ٿي ويو. هاڻي، اهڙي حالت ۾، غلطي پيغام جاري ڪيا ويا آهن.
ڪو نه گرڻ-پٺ (XC8-2646) The -nofallback آپشن صحيح طور تي لاڳو نه ڪيو ويو، ۽ نه ئي دستاويز ٿيل. اهو هاڻي چونڊيو وڃي ٿو انهي کي يقيني بڻائڻ لاءِ ته ڪمپلر واپس نه ٿيندو گهٽ اصلاحي سيٽنگ تي جيڪڏهن ڪمپلر غير لائسنس يافته آهي، ۽ ان جي بدران هڪ غلطي جاري ڪندو.
نامناسب رفتار جي اصلاح (X03-2637) ليول 3 اصلاحن (-03) کي منتخب ڪرڻ وقت طريقيڪار تجزيي جي اصلاح کي فعال ڪيو پيو وڃي. اهي اصلاحون ڪوڊ جي سائيز کي گھٽائي ٿي ڪوڊ جي رفتار جي خرچ تي، تنهنڪري نه ڪيو وڃي ها.
خراب EEPROM پهچ (XC8-2629) The eeprom_read_block روٽين Xmega ڊوائيسز تي صحيح طريقي سان ڪم نه ڪيو جڏهن -mconst-data-in-progmem آپشن کي فعال ڪيو ويو (جيڪا ڊفالٽ حالت آهي)، نتيجي ۾ EEPROM ميموري صحيح طريقي سان نه پڙهي وئي.
غلط ياداشت مختص (XC8-2593, XC8-2651) جڏهن -Ttext يا -Tdata لنڪر آپشن (مثال طورampهڪ -vl ڊرائيور اختيار استعمال ڪندي ذريعي گذري ويو) بيان ڪيو ويو آهي، لاڳاپيل متن/ڊيٽا علائقي جي اصليت کي اپڊيٽ ڪيو ويو؛ جڏهن ته، آخري ايڊريس مطابق ترتيب نه ڏني وئي هئي، جيڪا علائقي کي ٽارگيٽ ڊوائيس جي ميموري جي حد کان وڌيڪ ڪري سگهي ٿي.
وڌيڪ منسوب ٿيل فنڪشن سان حادثو (XC8-2580) ڪمپلر تباھ ٿي ويو جيڪڏھن ھڪڙي فنڪشن کي ھڪڙي کان وڌيڪ مداخلت، سگنل يا nmi خاصيتون استعمال ڪندي قرار ڏنو ويو آھي، مثال طور، خاصيت ( ( سگنل، مداخلت) ).
غلط ATtiny مداخلت ڪوڊ (XC8-2465) جڏهن ATtiny ڊوائيسز جي تعمير ۽ اصلاحن کي غير فعال ڪيو ويو (-00)، مداخلت واري فنڪشن شايد رينج جمع ڪندڙ پيغامن کان ٻاهر آپرينڊ کي شروع ڪري ڇڏيو آهي.
اختيارن جي ذريعي نه ٿي گذريو (XC8-2452) جڏهن ڪيترن ئي، ڪاما کان الڳ ٿيل لنڪر آپشنز سان آپشن استعمال ڪري رهيا هئا، نه ته سڀئي لنڪر آپشنز لنڪر ڏانهن منتقل ڪيا پيا وڃن.
غلطي اڻ سڌي طرح پروگرام ميموري پڙهڻ (X03-2450) ڪجهه مثالن ۾، ڪمپيلر هڪ اندروني غلطي پيدا ڪئي (ناقابل شناخت insn) جڏهن هڪ پوائنٽر کان پروگرام ميموري تائين ٻه بائيٽ ويل پڙهڻ.
5.6. نسخو 2.32
جي ٻي رسائي لائبريري ناڪام ٿي (XC8-2381) xc8-ar جي ونڊوز ورزن کي سڏڻ. .exe لائبريري آرڪائيو ٻيو ڀيرو موجود لائبريري آرڪائيو تائين رسائي حاصل ڪرڻ لاءِ ناڪام ٿي سگھي ٿو ناڪام ٿي سگھي ٿو غلط پيغام جو نالو تبديل ڪرڻ جي ناڪامي سان.
5.7. نسخو 2.31
اڻڄاتل مرتب ڪندڙ ناڪامي (XC8-2367) جڏهن ونڊوز پليٽ فارمن تي هلندي هئي جنهن ۾ سسٽم عارضي ڊاريڪٽري هڪ رستي تي سيٽ ڪئي هئي جنهن ۾ هڪ ڊٽ شامل هوندو هو. ڪردار، گڏ ڪرڻ وارو عمل ڪرڻ ۾ ناڪام ٿي سگھي ٿو.
5.8. نسخو 2.30
گلوبل ليبل آئوٽ لائننگ کان پوءِ گم ٿي ويا (XC8-2299) هٿ سان لکيل اسيمبليءَ جو ڪوڊ جيڪو گلوبل ليبلز کي اسيمبليءَ جي ترتيبن ۾ رکي ٿو، جيڪي عمل جي تجزيي سان ٺهڪندڙ آهن، شايد صحيح طور تي بحال نه ڪيا ويا هجن.
آرام ڪرڻ وارو حادثو (XC8-2287) -mrelax آپشن کي استعمال ڪرڻ سان شايد لنڪر حادثي جو سبب بڻيو هجي جڏهن tail jump relaxation optimizations ret instruction کي هٽائڻ جي ڪوشش ڪئي جيڪا سيڪشن جي آخر ۾ نه هئي.
حادثو جڏهن ليبل کي قدر جي طور تي بهتر ڪرڻ (XC8-2282) ڪوڊ استعمال ڪندي "ليبلز ايز ويلز" جي GNU C ٻولي جي واڌ جي ڪري ٿي سگھي ٿي طريقيڪار جي تجزيي جي اصلاحن کي حادثي جو سبب بڻائين، ھڪڙي بيان ڪيل VMA رينج سان spans فڪس اپ غلطي سان.
ائين نه آهي const (XC8-2271) st rstr ( ) ۽ ٻين ڪمن لاءِ پروٽوٽائپس مان جڏهن ته -mconst-data-inprogmem خصوصيت کي غير فعال ڪيو ويو آهي، واپسي اسٽرنگ پوائنٽرز تي غير معياري ڪانسٽ قابليت جي وضاحت نه ڪريو. نوٽ ڪريو ته avrxmega3 ۽ avrtiny ڊوائيسز سان، هي خصوصيت مستقل طور تي فعال آهي.
گم ٿيل شروعاتي (XC8-2269) جڏهن کان وڌيڪ ترجمي جي يونٽ ۾ هڪ متغير هڪ سيڪشن ۾ رکيل هو (استعمال ڪندي _section يا _attribute_ ( (سيڪشن) ))، ۽ پهريون اهڙو متغير صفر شروع ڪيو ويو هو يا ان ۾ ابتدائي ڪندڙ نه هو، ساڳئي ترجمي جي يونٽ ۾ ٻين متغيرن لاءِ ابتدائي ڪندڙ جيڪي رکيا ويا هئا. ساڳئي حصي ۾ گم ٿي ويا.
5.1. نسخو 2.29 (فنڪشنل سيفٽي رليز)
ڪو به.
5.2. نسخو 2.20
ڊگھي حڪمن سان غلطي (XC8-1983) جڏهن هڪ AVR ٽارگيٽ استعمال ڪندي، گڏ ڪرڻ وارو بند ٿي سگھي ٿو a سان file غلطي نه ملي، جيڪڏهن ڪمانڊ لائن تمام وڏي هئي ۽ خاص اکر شامل هئا جهڙوڪ ڪوٽا، پٺتي پيل، وغيره.
غير تفويض ٿيل روڊاٽا سيڪشن (XC8-1920) AVR لنڪر ڪسٽم روڊاٽا سيڪشن لاءِ ميموري تفويض ڪرڻ ۾ ناڪام ٿيو جڏهن avrxmega3 ۽ avrtiny آرڪيٽيڪچرز لاءِ تعمير ڪيو ويو، ممڪن طور تي ميموري اوورليپ غلطيون پيدا ڪندي
5.3. نسخو 2.19 (فنڪشنل سيفٽي رليز)
ڪو به.
5.4. نسخو 2.10
بحالي جي ناڪامي (XC8-1891) بهترين فٽ مختص ڪندڙ ياداشت کي ڇڏي رهيو هو 'سوراخ' حصن جي وچ ۾ لنڪر آرام کان پوءِ. ميموري کي ٽڪرائڻ کان علاوه، اهو امڪان وڌائي ٿو اتي لنڪر جي منتقلي جي ناڪامي جي پي سي سان لاڳاپيل جمپس يا ڪال جي حد کان ٻاهر ٿيڻ سان.
ھدايتون آرام سان تبديل نه ٿيون (XC8-1889) Linker Relaxation جمپ يا ڪال ھدايتن لاءِ نه ٿي سگھيا جن جي ھدف پھچڻ جي قابل ٿي وڃن جيڪڏھن آرام ڪيو وڃي.
غائب ڪارڪردگي (XC8E-388) مان ڪيترائي وصف ، جهڙوڪ clock_div_t ۽ clock_prescale set ()، ڊوائيسز لاءِ وضاحت نه ڪئي وئي، بشمول ATmega324PB، ATmega328PB، ATtiny441، ۽ ATtiny841.
غائب ميڪرو اڳي پروسيسر ميڪروس _XC8_MODE_، _XC8_VERS ION، _XC، ۽ _XC8 پاڻمرادو وضاحت ڪندڙ نه هئا. اهي هاڻي موجود آهن.
5.5. نسخو 2.05
اندروني ڪمپيلر غلطي (XC8-1822) ونڊوز جي هيٺان تعمير ڪرڻ وقت، ڪوڊ کي بهتر ڪرڻ وقت هڪ اندروني ڪمپيلر غلطي پيدا ٿي سگهي ٿي.
RAM اوور فلو نه لڌو ويو (XC8-1800, XC8-1796) پروگرام جيڪي موجود ريم کان وڌيڪ آهن انهن کي ڪجهه حالتن ۾ مرتب ڪندڙ طرفان نه لڌو ويو، نتيجي ۾ رن ٽائم ڪوڊ ناڪامي ٿي.
ختم ٿيل فليش ميموري (XC8-1792) avrxmega3 ۽ avrtiny ڊوائيسز لاء، فليش ميموري جا حصا MPLAB X پاران غير پروگرام ٿيل ڇڏيا ويا هوندا. IDE.
مکيه عمل ڪرڻ ۾ ناڪامي (XC8-1788) ڪجھ حالتن ۾ جتي پروگرام ۾ ڪو به عالمي متغير بيان نه ڪيو ويو ھو، رن ٽائم شروعاتي ڪوڊ نه نڪرندو ھو ۽ مکيه ( ) فنڪشن ڪڏھن به نه پھچي ويو ھو.
غلط ياداشت جي ڄاڻ (XC8-1787) avrxmega3 ۽ avrtiny ڊوائيسز لاءِ، avr-size پروگرام رپورٽ ڪري رهيو هو ته صرف پڙهڻ لاءِ ڊيٽا پروگرام ميموري جي بدران رام استعمال ڪري رهيو هو.
غلط پروگرام ميموري پڙهڻ (XC8-1783) پروجيڪٽس گڏ ڪيل ڊوائيسز لاءِ پروگرام ميموري سان گڏ ڊيٽا ايڊريس اسپيس ۾ ميپ ٿيل آهن ۽ جيڪي PROGMEM macro/attribute استعمال ڪندي شيون بيان ڪن ٿيون شايد اهي شيون غلط ايڊريس مان پڙهيا هجن.
خصوصيتن سان اندروني غلطي (XC8-1773) هڪ اندروني غلطي ٿي وئي آهي جيڪڏهن توهان وضاحت ڪئي ته پوائنٽر اعتراض سان
_at () or attribute() ٽوڪن جي وچ ۾ پوائنٽر جو نالو ۽ dereferenced قسم، مثال لاءِampلي، چار*
_at (0x800150) سي پي؛ هڪ ڊيڄاريندڙ هاڻي جاري ڪيو ويو آهي جيڪڏهن اهڙو ڪوڊ سامهون اچي ٿو.
مکيه عمل ڪرڻ ۾ ناڪامي (XC8-1780, XC8-1767, XC8-1754) EEPROM متغير استعمال ڪرڻ يا config pragma استعمال ڪندي فيوز جي وضاحت ڪرڻ شايد ڊيٽا جي غلط شروعات ۽/يا پروگرام جي عمل کي رن ٽائم جي شروعاتي ڪوڊ ۾ بند ڪري ڇڏيو هجي، main ( ) تائين پهچڻ کان اڳ.
ننڍڙن ڊوائيسز سان فيوز غلطي (XC8-1778، XC8-1742) attiny4/5/9/10/20/40 ڊوائيسز انهن جي هيڊر ۾ غلط فيوز جي ڊيگهه بيان ڪئي هئي files جيڪي لنڪر جي غلطين کي ڏسندا آهن جڏهن ڪوڊ ٺاهڻ جي ڪوشش ڪئي وئي جيڪا فيوز جي وضاحت ڪئي وئي آهي.
ڀاڱو ڪرڻ غلطي (XC8-1777) هڪ وقفي وقفي جي غلطي کي درست ڪيو ويو آهي.
گڏ ڪرڻ وارو حادثو (XC8-1761) avr-as assembler شايد تباھ ٿي چڪو ھوندو جڏھن compiler Ubuntu 18 تحت ھلندو ھو.
شيون صاف نه ڪيون ويون (XC8-1752) غير شروع ٿيل جامد اسٽوريج جي مدت واريون شيون شايد رن ٽائم شروعاتي ڪوڊ ذريعي صاف نه ڪيون ويون آهن.
تڪراري ڊوائيس جي وضاحت کي نظرانداز ڪيو ويو (XC8-1749) گڏ ڪرڻ وارو غلطي پيدا نه ڪري رهيو هو جڏهن گھڻن ڊوائيس جي وضاحت جا اختيار استعمال ڪيا ويا ۽ مختلف ڊوائيسز کي اشارو ڪيو ويو.
هيپ جي ذريعي ميموري ڪرپشن (XC8-1748) The _heap_start جي نشاني غلط طور تي سيٽ ڪئي پئي وڃي، نتيجي ۾ عام متغيرن جي خراب ٿيڻ جو امڪان.
لنڪر جي منتقلي جي غلطي (XC8-1739) هڪ لنڪر جي منتقلي جي غلطي ٿي سگھي ٿي جڏهن ڪوڊ ۾ هڪ rjmp يا rcal شامل هجي هڪ ٽارگيٽ سان بلڪل 4k بائيٽ پري.
5.6. نسخو 2.00
ڪو به.
ڄاڻايل مسئلا
مرتب ڪندڙ جي آپريشن ۾ ھيٺيون حدون آھن. اهي ٿي سگهن ٿيون عام ڪوڊنگ پابنديون، يا صارف جي دستياب ۾ موجود معلومات کان انحراف. عنوان ۾ بریکٹ ٿيل ليبل (س) آهن انهي مسئلي جي سڃاڻپ ٽريڪنگ ڊيٽابيس ۾. اهو فائدو ٿي سگهي ٿو جيڪڏهن توهان کي مدد سان رابطو ڪرڻ جي ضرورت آهي. اهي شيون جن تي ليبل نه هوندا آهن اهي حدون آهن جيڪي بيان ڪن ٿيون موڊي آپرينڊي ۽ جيڪي مستقل طور تي اثر ۾ رهڻ جو امڪان آهن.
6.1. MPLAB X IDE انضمام
ايم پي ايل اي بي آئي ڊي اي انٽيگريشن جيڪڏهن Compiler MPLAB IDE مان استعمال ڪيو وڃي ته پوءِ توهان کي لازمي طور تي MPLAB IDE انسٽال ڪرڻ گهرجي Compiler انسٽال ڪرڻ کان اڳ.
6.2. ڪوڊ جي پيدائش
سيگفالٽ سان سيڪشن-اينڪرز آپشن (XC8-3045) پروگرام جيڪو متغير دليلن جي فهرستن سان ڪم جي وضاحت ڪري ٿو ۽ جيڪو استعمال ڪري ٿو -fsection-anchors آپشن شايد اندروني ڪمپيلر جي غلطي کي شروع ڪري سگھي ٿو: سيگمينٽيشن غلطي.
ڊيبگ معلومات هم وقت سازي کان ٻاهر (XC8-2948) جڏهن لنڪر آرام جي اصلاحن کي ڇڪي ٿو هدايتون (مثال طورample call to rcal هدايتون)، ميپنگ کي ايڊريس ڪرڻ لاءِ سورس لائن شايد هم وقت نه رهي جڏهن هڪ سيڪشن ۾ هڪ کان وڌيڪ ڇڪڻ وارو عمل ٿئي ٿو.
هيٺ ڏنل مثال ۾ample, foo لاءِ ٻه ڪالون آهن جيڪي مائٽي واري ڪالن کي آرام سان ختم ڪن ٿيون.
PA ميموري مختص ڪرڻ جي ناڪامي (XC8-2881) جڏهن طريقيڪار تجزيه اصلاح ڪندڙ استعمال ڪندي، لنڪر شايد ميموري مختص ڪرڻ جي غلطي جي رپورٽ ڪري سگهي ٿي جڏهن ڪوڊ سائيز ڊوائيس تي موجود پروگرام ميموري جي مقدار جي ويجهو آهي، جيتوڻيڪ پروگرام کي دستياب جڳهه کي پورو ڪرڻ جي قابل هوندو.
ايترو سمارٽ ناهي Smart-I0 (XC8-2872) ڪمپيلر جو سمارٽ-io فيچر snprint f فنڪشن لاءِ صحيح پر ذيلي-بهترين ڪوڊ ٺاهيندو جيڪڏھن const-data-in-progmem جي خصوصيت کي غير فعال ڪيو ويو آھي يا جيڪڏھن ڊوائيس پنھنجي سموري فليش کي ڊيٽا ميموري ۾ ميپ ڪيو آھي.
اڃا به گهٽ سمارٽ Smart-I0 (XC8-2869) گڏ ڪرڻ وارو سمارٽ-io خاصيت صحيح پر ذيلي اپٽيمل ڪوڊ ٺاهيندو جڏهن -flto ۽ -fno-builtin آپشن ٻئي استعمال ڪيا ويندا.
Suboptimal صرف پڙهڻ واري ڊيٽا جي جڳهه (XC8-2849) لنڪر في الحال APPCODE ۽ APPDATA ميموري سيڪشن کان واقف ناهي، ۽ نه ئي ميموري نقشي ۾ [No-Read-While-Write Divisions. نتيجي طور، ھڪڙو ننڍڙو موقعو آھي ته لنڪر صرف پڙھڻ واري ڊيٽا کي ميموري جي غير مناسب علائقي ۾ مختص ڪري سگھي ٿو. غلط ڊيٽا جا موقعا وڌي ويندا آهن جيڪڏهن const-data-in-progmem فيچر فعال هجي، خاص طور تي جيڪڏهن const-data-in-config-mapped-progmem فيچر پڻ فعال هجي. اهي خاصيتون بند ڪري سگهجن ٿيون جيڪڏهن گهربل هجي.
اعتراض file پروسيسنگ آرڊر (XC8-2863) ترتيب جنهن ۾ شيون files تي عمل ڪيو ويندو لنڪر طرفان مختلف ٿي سگھي ٿو طريقيڪار جي تجزيي جي اصلاحن جي استعمال جي بنياد تي (-mpa آپشن). اهو صرف ڪوڊ تي اثر انداز ڪندو جيڪو ڪيترن ئي ماڊلز ۾ ڪمزور افعال کي بيان ڪري ٿو.
ڳنڍڻ جي غلطي مطلق سان (XC8-2777) جڏهن هڪ اعتراض کي RAM جي شروعات ۾ هڪ پتي تي مطلق ڪيو ويو آهي ۽ اڻڄاتل شيون پڻ بيان ڪيون ويون آهن، هڪ لنڪر غلطي ٿي سگهي ٿي.
مختصر جاڳڻ جي سڃاڻپ (XC8-2775) ATA5700/2 ڊوائيسز لاءِ، PHIDO/1 رجسٽر صرف 16 بِٽ ويڪر بجاءِ 32 بِٽ ويڪر طور بيان ڪيا ويا آهن.
لنڪر حادثو جڏهن سڏڻ جي علامت (XC8-2758) لنڪر تباھ ٿي سگھي ٿو جيڪڏھن -mrelax ڊرائيور اختيار استعمال ڪيو ويندو آھي جڏھن سورس ڪوڊ ھڪڙي علامت کي سڏيندو آھي جنھن جي وضاحت ڪئي وئي آھي -cc., -de f sym linker آپشن.
غلط شروعات (XC8-2679) اتي وچ ۾ هڪ تفاوت آهي جتي ڪجهه عالمي / جامد بائيٽ-سائيز شين لاءِ شروعاتي قيمتون ڊيٽا ياداشت ۾ رکيل آهن ۽ جتي متغيرن کي رن ٽائم تي پهچايو ويندو.
خراب اڻ سڌي طرح فنڪشن ڪال (XC8-2628) ڪجهه مثالن ۾، فنڪشنل ڪالز ذريعي ٺاهيل فنڪشن پوائنٽر ذريعي محفوظ ڪيل هڪ ساخت جي حصي طور ناڪام ٿي سگهي ٿي.
strtof hexadecimal floats لاءِ صفر ڏي ٿو (XC8-2626) لائبريري افعال strt et al ۽ scanf ( ) et al، هميشه هڪ hexadecimal سچل-پوائنٽ نمبر کي تبديل ڪندو، جيڪو صفر تائين ايڪسپونٽ جي وضاحت نٿو ڪري. مثال طورampاليزي:
strtof ("Oxl"، &endptr) ؛
قدر واپس ڪندو 0، نه I.
غلط اسٽيڪ ايڊوائزر ميسيجنگ (XC8-2542, XC8-2541) ڪجهه مثالن ۾، اسٽيڪ ايڊوائزر وارننگ جي حوالي سان ورجائي يا غير مقرر ٿيل اسٽيڪ استعمال ٿيل آهي (ممڪن طور تي alloca()) جي استعمال ذريعي خارج ٿيل نه آهي.
نقلي مداخلت واري ڪوڊ سان ناڪامي (XC8-2421) جتي هڪ کان وڌيڪ مداخلت واري فنڪشن هڪ ئي جسم آهي، ڪمپلر کي هڪ مداخلت واري فنڪشن لاء ٻئي کي ڪال ڪري سگھي ٿو. ان جي نتيجي ۾ سڀ ڪال-ڪالبر ٿيل رجسٽرس غير ضروري طور تي محفوظ ٿي ويندا، ۽ انٽرپرٽس کي فعال ڪيو ويندو ان کان اڳ جو موجوده مداخلت واري هينڊلر جي ايپيلوگ کي هلايو وڃي، جيڪو ڪوڊ جي ناڪامي جو سبب بڻجي سگهي ٿو.
غلط ڊي ايف پي رستي سان خراب ٻاڦ (XC8-2376) جيڪڏهن مرتب ڪندڙ کي غلط DFP رستي ۽ هڪ 'spec' سان سڏيو وڃي ٿو file منتخب ٿيل ڊيوائس لاءِ موجود آهي، مرتب ڪندڙ گم ٿيل ڊوائيس فيملي پيڪ جي رپورٽ نه ڪري رهيو آهي ۽ ان جي بدران 'spec' چونڊيو file، جيڪو پوءِ ٿي سگھي ٿو غلط آئوٽ پٽ. 'خاص' files شايد ورهايل DFPs سان تازه ڪاري نه هجي ۽ صرف اندروني ڪمپيلر ٽيسٽ سان استعمال لاءِ ارادو ڪيو ويو.
ميموري اوورليپ اڻ ڄاتل (XC8-1966) ڪمپيلر ڪنهن پتي تي مطلق ٺهيل شين جي ميموري اوورليپ کي نه ڳولي رهيو آهي (ذريعي _at ( )) ۽ ٻيون شيون استعمال ڪندي سيڪشن ( ) بيان ڪندڙ ۽ جيڪي ساڳئي ايڊريس سان ڳنڍيل آهن.
لائبريري افعال سان ناڪامي ۽ _memx (XC8-1763) ميمڪس ايڊريس اسپيس ۾ هڪ دليل سان گڏ libgcc فلوٽ فنڪشن کي ناڪام ٿي سگھي ٿو. ياد رهي ته لائبريري جا معمول ڪجهه سي آپريٽرز کان سڏبا آهن، تنهن ڪري، مثال طورample، هيٺ ڏنل ڪوڊ متاثر ٿيو آهي:
واپسي regFloatVar > memxFloatVar؛
محدود libgcc عملدرآمد (AVRTC-731) ATTiny4/5/9/10/20/40 پراڊڪٽس لاءِ، libgcc ۾ معياري C/Math لائبريري تي عمل درآمد تمام محدود آهي يا موجود ناهي.
پروگرام ميموري جون حدون (AVRTC-732) پروگرام ميموري تصويرون 128 kb کان مٿي آهن ٽول چين جي مدد سان؛ تنهن هوندي به، اهڙا سڃاتل مثال موجود آهن لنڪر ابارٽس کان سواءِ آرام جي ۽ ڪنهن مددگار نقص پيغام کان سواءِ گهربل فنڪشن اسٽبس پيدا ڪرڻ بجاءِ جڏهن -mre lax آپشن استعمال ڪيو وڃي.
نالي جي جاءِ جون حدون (AVRTC-733) نالي ٿيل ايڊريس اسپيسز جي مدد ڪئي وئي آهي ٽول چين، صارف جي گائيڊ سيڪشن ۾ بيان ڪيل حدن جي تابع خاص قسم جي قابليت.
ٽائم زونز The لائبريري جا ڪم GMT فرض ڪن ٿا ۽ مقامي ٽائم زونز کي سپورٽ نٿا ڪن، ان ڪري localtime ( ) ساڳيو ئي وقت واپس ڪندو جيئن gmtime ( )، مثال لاءِampلي.
file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm
دستاويز / وسيلا
![]() |
MICROCHIP MPLAB XC8 C ڪمپائلر ڊولپمينٽ سافٽ ويئر [pdf] مالڪ جو دستور MPLAB XC8 C، MPLAB XC8 C ڪمپائلر ڊولپمينٽ سافٽ ويئر، ڪمپلر ڊولپمينٽ سافٽ ويئر، ڊولپمينٽ سافٽ ويئر، سافٽ ويئر |




