MPLAB® XC8 C kompilyator versiyasi 2.41 AVR® MCU uchun relizlar haqida eslatmalar
Foydalanuvchi uchun qo'llanma
MPLAB XC8 C kompilyatorni ishlab chiqish dasturi
MIKROCHIP AVR QURILMALARINI MAQSADGA BERISHDA MAZBURIY HUJJAT MPLAB XC8 C KOMPİYATERI BO'YICHA MUHIM MA'LUMOTLARNI O'z ichiga oladi.
USHBU DASTURI ISHLATISHDAN OLDIN O‘QING. AGAR SIZ 8 BITLI PIC QURILMALAR UCHUN KOMPİYYERNING FOYDALANISHINGIZDA PIC HUJJAT UCHUN MPLAB XC8 C TUZISH BERISH ISHLAB CHIQARISHIGA QARING.
tugadiview
1.1. Kirish
Microchip MPLAB® XC8 C kompilyatorining ushbu versiyasida bir nechta yangi xususiyatlar va xatolarni tuzatish mavjud.
1.2. Qurilish sanasi
Ushbu kompilyator versiyasining rasmiy tuzilgan sanasi 8-yil 2023-fevral.
1.3. Oldingi versiya
Oldingi MPLAB XC8 C kompilyator versiyasi 2.40-yil 3-iyulda qurilgan 2022 edi.
1.4. Funktsional xavfsizlik bo'yicha qo'llanma
Funktsional xavfsizlik litsenziyasini sotib olganingizda, MPLAB XC kompilyatorlari uchun funktsional xavfsizlik bo'yicha qo'llanma hujjatlar to'plamida mavjud.
1.5. Komponent litsenziyalari va versiyalari
AVR MCU asboblari uchun MPLAB XC8 C kompilyatori GNU General Public License (GPL) ostida yozilgan va tarqatilgan, bu uning manba kodi erkin tarqatilishi va ommaga ochiqligini bildiradi.
GNU GPL ostida asboblar uchun manba kodi Microchip-dan alohida yuklab olinishi mumkin websayt. Siz GNU GPL ni o'rnatish litsenziyangiz.txt avr/doc katalogingizning pastki katalogida joylashgan faylda o'qishingiz mumkin. GPL asosidagi tamoyillarning umumiy muhokamasini bu yerda topishingiz mumkin.
Sarlavha fayllari, bog'lovchi skriptlar va ish vaqti kutubxonalari uchun taqdim etilgan qo'llab-quvvatlash kodi xususiy kod bo'lib, GPL bilan qamrab olinmaydi.
Ushbu kompilyator GCC 5.4.0 versiyasi, binutils 2.26 versiyasining ilovasi va avr-libc 2.0.0 versiyasidan foydalanadi.
1.6. Tizim talablari
MPLAB XC8 C kompilyatori va u foydalanadigan litsenziyalash dasturi turli xil operatsion tizimlar, jumladan, quyidagining 64-bitli versiyalari uchun mavjud: Microsoft® Windows® 10 ning professional nashrlari; Ubuntu® 18.04; va macOS® 10.15.5. Windows uchun ikkilik kodlar imzolangan. MacOS uchun ikkilik kodlar imzolangan va notarial tasdiqlangan. MPLAB XC tarmoq litsenziyasi serveri turli 64-bitli operatsion tizimlar, jumladan, Microsoft Windows 10 va undan yuqori versiyalar uchun mavjud; Ubuntu 18.04 va undan yuqori; yoki macOS 10.15 va undan yuqori. Server, shuningdek, Windows Server, Oracle® Enterprise Linux® va Red Hate Enterprise Linux kabi boshqa turli operatsion tizimlarda, shuningdek, qo'llab-quvvatlanadigan operatsion tizimlarning eski versiyalarida ham ishlashi mumkin. Biroq, MPLAB XC Network License Server ushbu operatsion tizimlarda sinovdan o'tkazilmagan. MPLAB XC tarmoq litsenziyasi serveri tarmoq litsenziyalari uchun virtual mashina litsenziyasi (SW006021-VM) yordamida qo'llab-quvvatlanadigan operatsion tizimning Virtual mashinalarida ishga tushirilishi mumkin. MPLAB XC tarmoq serverining barcha 32-bitli versiyalari 3.00 versiyasidan boshlab to'xtatiladi.
Qo'llab-quvvatlanadigan qurilmalar
Ushbu kompilyator chiqarilish vaqtida barcha mavjud 8-bitli AVR MCU qurilmalarini qo'llab-quvvatlaydi. Barcha qo'llab-quvvatlanadigan qurilmalar ro'yxatini (kompilyator katalogida) ko'ring. Ushbu fayllar ro'yxati ham mavjud
avr_chipinfo.html doc konfiguratsiya bit sozlamalari har bir qurilma uchun.
1.7. Nashrlar va litsenziyani yangilash
MPLAB XC8 kompilyatori litsenziyalangan (PRO) yoki litsenziyasiz (bepul) mahsulot sifatida faollashtirilishi mumkin. Kompilyatoringizni litsenziyalash uchun faollashtirish kalitini sotib olishingiz kerak. Litsenziya Bepul mahsulotga nisbatan yuqori darajadagi optimallashtirish imkonini beradi. Litsenziyasiz kompilyator litsenziyasiz muddatsiz ishlashi mumkin. MPLAB XC8 Functional Safety kompilyatori Microchip'dan sotib olingan funktsional xavfsizlik litsenziyasi bilan faollashtirilgan bo'lishi kerak. Ushbu litsenziyasiz kompilyator ishlamaydi. Faollashtirilgandan so'ng siz istalgan optimallashtirish darajasini tanlashingiz va kompilyatorning barcha xususiyatlaridan foydalanishingiz mumkin. MPLAB XC Funktsional xavfsizlik kompilyatorining ushbu versiyasi Tarmoq serveri litsenziyasini qo'llab-quvvatlaydi.
Litsenziya turlari va kompilyatorni litsenziya bilan o'rnatish haqida ma'lumot olish uchun MPLAB XC C kompilyatorlarini o'rnatish va litsenziyalash (DS50002059) hujjatiga qarang.
1.8. O'rnatish va faollashtirish
Shuningdek, ushbu kompilyatorga kiritilgan oxirgi litsenziya menejeri haqida muhim ma'lumot olish uchun Migratsiya muammolari va cheklovlar bo'limlariga qarang.
Agar MPLAB IDE dan foydalansangiz, ushbu vositani o'rnatishdan oldin eng so'nggi MPLAB X IDE 5.0 yoki undan keyingi versiyasini o'rnatganingizga ishonch hosil qiling. Kompilyatorni o'rnatishdan oldin IDE-dan chiqing. (Windows), (Linux) yoki (macOS) .exe .run .app kompilyator o'rnatish dasturini ishga tushiring, masalan, ekrandagi ko'rsatmalarga amal qiling. XC8-1.00.11403-windows.exe Standart o'rnatish katalogi tavsiya etiladi. Agar siz Linuxdan foydalansangiz, kompilyatorni terminal va ildiz hisobidan o'rnatishingiz kerak. Administrator imtiyozlariga ega macOS hisob qaydnomasi yordamida o'rnating.
Endi faollashtirish o'rnatish uchun alohida amalga oshiriladi. Qo'shimcha ma'lumot olish uchun MPLAB® XC C kompilyatorlari uchun litsenziya menejeri (DS52059) hujjatiga qarang.
Agar siz kompilyatorni baholash litsenziyasi ostida ishga tushirishni tanlasangiz, baholash muddati tugaganidan keyin 14 kun ichida kompilyatsiya paytida ogohlantirish olasiz. Agar siz HPA obunangiz tugaganidan keyin 14 kun ichida bo'lsangiz, xuddi shunday ogohlantirish beriladi.
XC tarmoq litsenziyasi serveri alohida oʻrnatuvchi boʻlib, bir foydalanuvchi uchun kompilyator oʻrnatuvchisiga kiritilmagan.
XC Litsenziya menejeri endi suzuvchi tarmoq litsenziyalarining roumingini qo'llab-quvvatlaydi. Mobil foydalanuvchilarga mo'ljallangan ushbu xususiyat suzuvchi litsenziyaga qisqa vaqt ichida tarmoqdan chiqib ketish imkonini beradi. Ushbu xususiyatdan foydalanib, siz tarmoqdan uzishingiz va MPLAB XC kompilyatoridan foydalanishingiz mumkin. Ushbu xususiyat haqida ko'proq ma'lumot olish uchun XCLM o'rnatilishining doc jildiga qarang.
MPLAB X IDE roumingni vizual boshqarish uchun Litsenziyalar oynasini (Asboblar > Litsenziyalar) o'z ichiga oladi.
1.8.1. O'rnatish bilan bog'liq muammolarni hal qilish
Windows operatsion tizimlaridan birida kompilyatorni o'rnatishda qiyinchiliklarga duch kelsangiz, quyidagi tavsiyalarni sinab ko'ring.
O'rnatishni administrator sifatida ishga tushiring.
O'rnatish ilovasining ruxsatlarini "To'liq nazorat" ga o'rnating. (Faylni o'ng tugmasini bosing, Xususiyatlar, Xavfsizlik yorlig'ini tanlang, foydalanuvchini tanlang, tahrirlang.)
Vaqtinchalik jildning ruxsatlarini "To'liq nazorat" ga o'rnating.
Vaqtinchalik jildning joylashishini aniqlash uchun Run buyrug'iga %temp% kiriting (Windows logotipi + R).
Bu o'sha katalogni ko'rsatadigan fayl tadqiqotchisi dialogini ochadi va sizga ushbu jildning yo'lini aniqlash imkonini beradi.
1.9. Kompilyator hujjatlari
Kompilyatorning foydalanuvchi qoʻllanmalari skrinshotda koʻrsatilganidek, MPLAB X IDE boshqaruv panelidagi koʻk rangli yordam tugmasini bosganingizda brauzeringizda ochiladigan HTML sahifasidan ochilishi mumkin.
Agar siz 8 bitli AVR maqsadlari uchun qurayotgan bo'lsangiz, AVR® MCU uchun MPLAB® XC8 C kompilyator foydalanuvchi qo'llanmasida ushbu arxitekturaga tegishli kompilyator imkoniyatlari va xususiyatlari haqida ma'lumot mavjud.

1.10. Mijozlarni qo‘llab-quvvatlash
Microchip ushbu kompilyator versiyasi bo'yicha xato hisobotlari, takliflar yoki sharhlarni mamnuniyat bilan qabul qiladi. Iltimos, har qanday xato hisobotlari yoki xususiyat so'rovlarini qo'llab-quvvatlash tizimi orqali boshqaring.
Hujjatlarni yangilash
MPLAB XC8 hujjatlarining onlayn va soʻnggi versiyalari uchun Microchipning Onlayn Texnik Hujjatlariga tashrif buyuring. websayt. Ushbu nashrda yangi yoki yangilangan AVR hujjatlari:
- AVR® MCU uchun MPLAB® XC8 C kompilyatori foydalanuvchi qo'llanmasi (G versiyasi)
- AVR® GNU Toolchain to MPLAB® XC8 migratsiya qoʻllanmasi (reviziya A)
- Hexmate foydalanuvchi qo'llanmasi (B versiyasi)
AVR® GNU Toolchain to MPLAB® XC8 migratsiya qoʻllanmasi C-ga asoslangan loyihani AVR 8-bitli GNU Toolchain-dan Microchip MPLAB XC8 C kompilyatoriga koʻchirishga qaror qilganingizda talab qilinishi mumkin boʻlgan manba kodidagi oʻzgarishlar va qurish opsiyalarini tavsiflaydi. Microchip Unified Standard Library Reference Guide Microchip Unified Standard Library tomonidan belgilangan funksiyalarning xatti-harakati va interfeysini, shuningdek kutubxona turlari va makrolaridan maqsadli foydalanishni tavsiflaydi. Ushbu ma'lumotlarning ba'zilari ilgari MPLAB® XC8 C kompilyatorining AVR® MCU uchun foydalanuvchi qo'llanmasida mavjud edi. Qurilmaga xos kutubxona ma'lumotlari hali ham ushbu kompilyator qo'llanmasida mavjud.
Agar siz 8-bitli qurilmalar va MPLAB XC8 C kompilyatorini endigina boshlayotgan bo'lsangiz, MPLAB® XC8 o'rnatilgan muhandislar uchun foydalanuvchi qo'llanmasi - AVR® MCUs (DS50003108) MPLAB X IDE-da loyihalarni o'rnatish va sizning kompyuteringiz uchun kod yozish haqida ma'lumotga ega. birinchi MPLAB XC8 C loyihasi. Ushbu qo'llanma endi kompilyator bilan tarqatiladi.
Hexmate foydalanuvchi qo‘llanmasi Hexmate-ni mustaqil dastur sifatida ishlatadiganlar uchun mo‘ljallangan.
Nima yangiliklar
Quyida kompilyator hozirda qo'llab-quvvatlaydigan yangi AVR-maqsadli xususiyatlar mavjud. Sarlavhalardagi versiya raqami keyingi xususiyatlarni qo'llab-quvvatlash uchun birinchi kompilyator versiyasini bildiradi.
3.1. Versiya 2.41
Bootrow qo'llab-quvvatlashi (XC8-3053) Kompilyator HEX faylida 0x860000 at.bootrow manzili prefiksi bilan har qanday bo'limlar tarkibini joylashtiradi. Ushbu bo'limlar BOOTROW xotirasi uchun ishlatiladi, u kalitlarni va boshqa xavfsiz ma'lumotlarni saqlash uchun mo'ljallangan bo'lib, ular faqat yuklovchi uchun ochiq bo'lishi kerak.
Ortiqcha qaytishni yo'q qilish (XC8-3048) Endi kompilyator maxsus bog'lovchi skriptlardan foydalanilganda ortga o'tish bilan ret funktsiyalaridagi ortiqcha ko'rsatmalarni yo'q qiladi. Bu avval amalga oshirilgan optimallashtirishga o'xshash, biroq endi u barcha yetim bo'limlarda amalga oshiriladi, hatto maxsus bog'lovchi skript ishlatilsa va eng yaxshi mos taqsimlash sxemasi o'ynalmasa ham. Vaqt turini o'zgartirish (XC8-2982, 2932) C99 standart kutubxona turi time_t dan turga o'zgartirildi, bu vaqtga bog'liq bo'lgan ba'zi uzoq uzun funktsiyalarda kod hajmini yaxshilash imkonini beradi, masalan. imzosiz long mktime()
Yangi nop (XC8-2946, 2945) Makro qo'shildi. Ushbu makro no-NOP() qo'shadi chiqishga nop operatsiya ko'rsatmasi.
XCLM ga yangilash (XC8-2944) Kompilyator bilan ishlatiladigan litsenziya menejeri yangilandi va endi kompilyator litsenziyasi tafsilotlarini tekshirishda yanada sezgir.
Trampchiziqli qo'ng'iroqlar (XC8-2760) Endi kompilyator uzoq shakldagi qo'ng'iroqlar ko'rsatmalarini qisqaroq nisbiy qo'ng'iroqlar bilan almashtirishni amalga oshirishi mumkin, agar ko'rsatmalarning nisbiy shakllari odatda maqsad doirasidan tashqarida bo'lsa. Bunday holatda, kompilyator rccalni chaqirish uchun ko'rsatmalar bilan almashtirishga harakat qiladi, bu esa 'trampkerakli manzilga oline' bajarilishi, masalanample: jmp
rcal tramp_foo ;foo deb atalgan edi
…
rcal tramp_foo
…
tramp_foo:
jmp foo
Ushbu optimallashtirish, shu kabi dastur oqimini optimallashtirish bilan birga, -mrelax opsiyasi tomonidan boshqariladi.
3.2. Versiya 2.40
Yangi qurilmani qoʻllab-quvvatlash endi quyidagi AVR qismlari uchun mavjud: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32EA64, AVR28DD64EA32, AVR64, AVR48 va AVRXNUMX.
Yaxshilangan protsessual abstraktsiya Protsessual abstraktsiyani (PA) optimallashtirish vositasi takomillashtirildi, shunda funksiya chaqiruvi bo'yicha ko'rsatma (/ ) bo'lgan kod tasvirlangan bo'lishi mumkin. Bu faqat stek argumentlarni o'tkazish yoki funktsiyadan qaytish qiymatini olish uchun ishlatilmasa, chaqiruv chaqiruvida amalga oshiriladi. Stack o'zgaruvchan argumentlar ro'yxatiga ega funktsiyani chaqirishda yoki ushbu maqsad uchun belgilangan registrlardan ko'ra ko'proq argumentlarni qabul qiladigan funktsiyani chaqirishda ishlatiladi. Bu xususiyatni opsiya yordamida oʻchirib qoʻyish mumkin yoki obʼyekt fayli yoki funksiyasi uchun mos ravishda- va atributidan (belgilagich) funksiyalar bilan tanlab foydalanish orqali protsessual abstraktsiyani butunlay oʻchirib qoʻyish mumkin.
mno-pa-outline-chaqiruvlar -mno-pa-on-file -mno-pa-on-function nopa Kod qamrovi makrosi Agar to'g'ri variant __nopa __CODECOV -mcodecov ko'rsatilgan bo'lsa, endi kompilyator makrosni aniqlaydi.
Xotirani band qilish opsiyasi Haydovchi endi AVR maqsadlarini yaratishda xc8-cc -mreserve=space@start:end opsiyasini qabul qiladi. Ushbu parametr belgilangan xotira oralig'ini ma'lumotlar yoki dastur xotirasi bo'shlig'ida saqlab qoladi va bog'lovchining ushbu sohada kod yoki ob'ektlarni to'ldirishiga yo'l qo'ymaydi. Smarter smart IO. Smart IO funksiyalariga bir qancha yaxshilanishlar kiritildi, jumladan, printf asosiy kodiga umumiy oʻzgartirishlar kiritildi, %n konversiya spetsifikatsiyasini mustaqil variant sifatida koʻrib chiqdi, soʻrov boʻyicha vararg pop tartib-qoidalari bilan bogʻlandi, ishlov berish uchun iloji boricha qisqaroq maʼlumotlar turlaridan foydalanildi. IO funktsiyasi argumentlari va maydon kengligi va aniq ishlov berishda umumiy kodni faktoring. Bu sezilarli kod va ma'lumotlarni tejashga olib kelishi mumkin, shuningdek, IO ning ishlash tezligini oshiradi.
3.3. Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Tarmoq serveri litsenziyasi MPLAB XC8 Funktsional xavfsizlik kompilyatorining ushbu nashri Tarmoq serveri litsenziyasini qo'llab-quvvatlaydi.
3.4. Versiya 2.36
Yo'q.
3.5. Versiya 2.35
Yangi qurilmani qoʻllab-quvvatlash quyidagi AVR qismlari uchun mavjud: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 va AVR64DD32.
Yaxshilangan kontekstni almashtirish Yangi -mcall-isr-prologues opsiyasi uzilish funksiyalarining kirishda registrlarni saqlash usulini va uzilish tartibi tugashi bilan bu registrlar qanday tiklanishini o'zgartiradi. U -mcall-prologues variantiga o'xshash tarzda ishlaydi, lekin faqat uzilish funktsiyalariga (ISR) ta'sir qiladi.
Yana ham takomillashtirilgan kontekstni almashtirish Yangi -mgas-isr-prologues opsiyasi kichik uzilishlarga xizmat ko'rsatish tartiblari uchun yaratilgan kontekstni almashtirish kodini boshqaradi. Bu funksiya yoqilganda, assembler registrdan foydalanish uchun ISRni skanerlaydi va faqat kerak bo'lganda foydalanilgan registrlarni saqlaydi.
Sozlanishi mumkin bo'lgan flesh xaritalash AVR DA va AVR DB oilasidagi ba'zi qurilmalarda dastur xotirasining qaysi 32k bo'limi ma'lumotlar xotirasiga joylashtirilishini belgilaydigan SFR (masalan, FLMAP) mavjud. Yangi – mconst-data-in-config-mapped-progmem opsiyasidan bog‘lovchi barcha konst-malakali ma’lumotlarni bitta 32k bo‘limga joylashtirishi va ushbu ma’lumotlarning ma’lumotlar xotirasiga joylashtirilishini ta’minlash uchun tegishli SFR registrini avtomatik ravishda ishga tushirishi uchun ishlatilishi mumkin. bo'sh joy, bu erda unga yanada samarali kirish mumkin bo'ladi.
Microchip birlashtirilgan standart kutubxonalari Barcha MPLAB XC kompilyatorlari endi MPLAB XC8 ning ushbu versiyasida mavjud bo'lgan Microchip yagona standart kutubxonasini baham ko'radi. AVO MCU uchun MPLA# XC8 C kompilyator foydalanuvchi qo‘llanmasi endi ushbu standart funksiyalar uchun hujjatlarni o‘z ichiga olmaydi. Ushbu ma'lumotni endi Microchip yagona standart kutubxonasi uchun qo'llanmada topish mumkin. Ilgari avr-libc tomonidan belgilangan ba'zi funksiyalar endi mavjud emasligini unutmang. (Lila funksiyasiga qarang.)
Smart I0 Yangi birlashtirilgan kutubxonalarning bir qismi sifatida printf va scanf oilalaridagi I0 funksiyalari endi har bir tuzilmada ushbu funksiyalardan dasturda qanday foydalanilganiga qarab maxsus yaratilgan. Bu dastur tomonidan ishlatiladigan resurslarni sezilarli darajada kamaytirishi mumkin.
Smart ICI yordam opsiyasi Smart I0 funksiyalariga qo‘ng‘iroqlarni tahlil qilganda (masalan, chop etish f () yoki scanf ()), kompilyator har doim format qatoridan aniqlay olmaydi yoki argumentlardan qo‘ng‘iroq uchun zarur bo‘lgan konvertatsiya ko‘rsatkichlarini aniqlay olmaydi. Ilgari, kompilyator har doim hech qanday taxminlar qilmaydi va to'liq ishlaydigan 10 ta funktsiya yakuniy dastur tasviriga bog'langanligini ta'minlaydi. Yangi – msmart-io-format=fmt opsiyasi qo‘shildi, shunda kompilyator o‘rniga foydalanuvchi tomonidan ishlatilishi noaniq bo‘lgan aqlli I0 funksiyalari tomonidan foydalaniladigan konversiya spetsifikatsiyalari to‘g‘risida xabardor bo‘lishi mumkin, bu esa haddan tashqari uzun 10 tartibni bog‘lanishining oldini oladi. (Batafsil ma'lumot uchun smart-io-format variantiga qarang.)
Maxsus bo'limlarni joylashtirish Ilgari -W1, –section-start opsiyasi faqat havola skripti bir xil nomdagi chiqish qismini belgilaganida ko'rsatilgan bo'limni so'ralgan manzilga joylashtirardi. Bunday bo'lmaganda, bo'lim bog'lovchi tomonidan tanlangan manzilga joylashtirildi va variant asosan e'tiborga olinmadi. Endi bog'lovchi skript bo'limni aniqlamasa ham, parametr barcha maxsus bo'limlar uchun hurmatga sazovor bo'ladi. Biroq, standart bo'limlar uchun bunday . matn, . bss yoki . ma'lumotlar, eng yaxshi mos taqsimlovchi hali ham ularning joylashuvi ustidan to'liq nazoratga ega bo'ladi va variant hech qanday ta'sir qilmaydi. Foydalanuvchi qo'llanmasida ta'riflanganidek -ton, -Tsection=addr opsiyasidan foydalaning.
3.6. Versiya 2.32
Stack Guidance PRO kompilyator litsenziyasi bilan mavjud bo'lib, kompilyatorning stekga yo'l-yo'riq ko'rsatish xususiyati dastur tomonidan ishlatiladigan har qanday stekning maksimal chuqurligini baholash uchun ishlatilishi mumkin. U dasturning chaqiruv grafigini tuzadi va tahlil qiladi, har bir funktsiyaning stekdan foydalanishini aniqlaydi va hisobot ishlab chiqaradi, undan dastur tomonidan foydalaniladigan steklar chuqurligi haqida xulosa chiqarish mumkin. Bu xususiyat -mchp-stack-usage buyruq qatori opsiyasi orqali yoqiladi. Bajarishdan so'ng stekdan foydalanishning qisqacha tavsifi chop etiladi. Batafsil stek hisoboti xaritada mavjud file, bu odatiy tarzda so'ralishi mumkin.
Yangi qurilmani qoʻllab-quvvatlash quyidagi AVR qismlari uchun mavjud: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64 va AVR32. Qaytarilgan qurilmani qoʻllab-quvvatlash quyidagi AVR qismlari uchun endi ishlamaydi: AVR32DA48, AVR16DA28 va AVR16DA32.
3.7. Versiya 2.31
Yo'q.
3.8. Versiya 2.30
Ma'lumotlarni ishga tushirishni oldini olishning yangi varianti Yangi -mno-data-init drayveri opsiyasi ma'lumotlarni ishga tushirish va bss bo'limlarini tozalashni oldini oladi. U do copy ma'lumotlarining chiqishini bostirish va yig'ilishda aniq bss belgilarini bajarish orqali ishlaydi files, bu esa o'z navbatida bog'lovchi tomonidan ushbu tartiblarning kiritilishiga to'sqinlik qiladi.
Kengaytirilgan optimallashtirishlar Ortiqcha qaytarish ko'rsatmalarini olib tashlash, agar bit bo'lsa o'tkazib yuborish buyrug'idan keyin ba'zi o'tishlarni olib tashlash va protsessual abstraktsiyani yaxshilash va bu jarayonni takrorlash qobiliyatini o'z ichiga olgan bir qator optimallashtirish yaxshilanishlari amalga oshirildi. Endi ushbu optimallashtirishlarning ba'zilarini boshqarish uchun qo'shimcha imkoniyatlar mavjud, xususan -f bo'limi-langarlar, bu bitta belgiga nisbatan statik ob'ektlarga kirish imkonini beradi; -mpa-iterations=n, bu protsessual abstraksiya iteratsiyasi sonini sukut bo'yicha 2 dan o'zgartirishga imkon beradi; va, -mpa-callcost-shortcall, u ko'proq tajovuzkor protsessual abstraktsiyani amalga oshiradi, bog'lovchi uzoq qo'ng'iroqlarni tinchlantirishi mumkin degan umidda. Ushbu oxirgi variant, agar asosiy taxminlar amalga oshirilmasa, kod hajmini oshirishi mumkin.
Yangi qurilmani qoʻllab-quvvatlash quyidagi AVR qismlari uchun mavjud: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128, AVR28, AVR128, AVR32, AVR128 48DB128. Qaytarilgan qurilmani qo‘llab-quvvatlash xizmati quyidagi AVR qismlari uchun endi ishlamaydi: ATA64, ATA5272, ATA5790N, ATA5790, ATA5791, ATA5795, ATA6285, ATA6286C, ATA6612C, ATA6613Q, ATA6614Q, ATA6616 va ATA6617.
3.9. Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Sarlavha file kompilyator o'rnatilgan o'rnatish uchun kompilyator MISRA kabi til xususiyatlariga mos kelishini ta'minlash uchun, sarlavha filetomonidan avtomatik ravishda kiritilgan , yangilandi. Ushbu sarlavhada builtin_avr_nop ( ) va o'rnatilgan avr delay_cycles () kabi barcha o'rnatilgan funktsiyalar uchun prototiplar mavjud. Ba'zi o'rnatilgan qurilmalar MISRAga mos kelmasligi mumkin; kompilyator buyruq qatoriga defineXCSTRICT_MISRA qo'shish orqali ularni o'tkazib yuborish mumkin. O'rnatilgan qurilmalar va ularning deklaratsiyasi qat'iy kenglik turlaridan foydalanish uchun yangilangan.
3.10. Versiya 2.20
Yangi qurilmani qoʻllab-quvvatlash quyidagi AVR qismlari uchun mavjud: ATTINY1624, ATTINY1626 va ATTINY1627.
Yaxshiroq eng yaxshi mos taqsimlash Kompilyatordagi eng yaxshi moslashtirgich (BFA) yaxshilandi, shunda bo'limlar yaxshiroq optimallashtirish imkonini beruvchi tartibda taqsimlanadi. BFA endi nomlangan manzil bo'shliqlarini qo'llab-quvvatlaydi va ma'lumotlarni ishga tushirishni yaxshiroq boshqaradi.
Yaxshilangan protsessual abstraktsiya Protsessual abstraktsiyani optimallashtirish endi ko'proq kod ketma-ketligida bajariladi. Ushbu optimallashtirish kod hajmini oshirishi mumkin bo'lgan oldingi holatlar optimallashtirish kodini bog'lovchining axlat yig'ish jarayonidan xabardor qilish orqali hal qilingan.
AVR Assembler yo'qligi AVR Assembler endi bu tarqatish bilan birga emas.
3.11. Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
3.12. Versiya 2.10
Kod qamrovi Ushbu nashr loyihaning manba kodi qay darajada bajarilganligini tahlil qilishni osonlashtiradigan kodni qamrab olish xususiyatini o'z ichiga oladi. Uni yoqish uchun -mcodecov=ram opsiyasidan foydalaning. Dastur qurilmangizda bajarilgandan so'ng, kod qamrovi ma'lumotlari qurilmada jamlanadi va bu kodni qamrab olish plagini orqali MPLAB X IDE ga o'tkazilishi va ko'rsatilishi mumkin. Ushbu plagin haqida ma'lumot olish uchun IDE hujjatlariga qarang. #pragma nocodecov keyingi funksiyalarni qamrov tahlilidan chiqarib tashlash uchun ishlatilishi mumkin. Ideal holda pragma boshiga qo'shilishi kerak file buni butunlay chiqarib tashlash uchun file qamrov tahlilidan. Shu bilan bir qatorda, _attribute_ ( (nocodecov) ) muayyan funktsiyani qamrab olish tahlilidan chiqarib tashlash uchun ishlatilishi mumkin.
Qurilma tavsifi files Yangi qurilma file avr_chipinfo deb ataladi. html kompilyator taqsimotining docs katalogida joylashgan. Bu file kompilyator tomonidan qo'llab-quvvatlanadigan barcha qurilmalar ro'yxati. Qurilma nomini bosing va u ushbu qurilma uchun ruxsat etilgan barcha konfiguratsiya bit sozlamalari/qiymati og'rig'ini ko'rsatadigan sahifani ochadi, masalan.amples. Protsessual abstraktsiya
Kompilyatorga yig'ish kodining umumiy bloklarini ushbu blokning chiqarilgan nusxasiga qo'ng'iroqlar bilan almashtiradigan protsessual abstraktsiya optimallashtirishlari qo'shildi. Ular 2, 3 yoki s optimallashtirishlarni tanlashda kompilyator tomonidan avtomatik ravishda chaqiriladigan alohida dastur tomonidan amalga oshiriladi. Ushbu optimallashtirishlar kod hajmini kamaytiradi, lekin ular bajarish tezligini va kodni tuzatishni kamaytirishi mumkin. Protsessual abstraktsiyani -mno-pa opsiyasi yordamida yuqori optimallashtirish darajalarida o'chirib qo'yish mumkin yoki -mpa yordamida pastroq optimallashtirish darajalarida (sizning litsenziyangizga bog'liq) yoqilishi mumkin. Ob'ekt uchun uni o'chirib qo'yish mumkin file -mno-pa-on-dan foydalanishfile=filenomi, yoki -mno-pa-on-function=function yordamida funksiya uchun o'chirilgan. Manba kodingiz ichida protsessual abstraktsiyani funksiya ta'rifi bilan atribut ( (nopa) ) yoki atributga ( (nopa, noinline) ) kengayadigan nopa dan foydalanib funksiya uchun o'chirib qo'yish mumkin va shu bilan funktsiyani kiritishni oldini oladi. va ichki kodning abstraktsiyasi mavjud.
Pragmada blokirovka bitlarini qo'llab-quvvatlash #pragma konfiguratsiyasi endi AVR blokirovka bitlarini va boshqa konfiguratsiya bitlarini belgilash uchun ishlatilishi mumkin. avr_chipinfo ni tekshiring. html file (yuqorida aytib o'tilgan) ushbu pragma bilan foydalanish uchun sozlama/qiymat juftlari uchun. Yangi qurilmani qoʻllab-quvvatlash quyidagi qismlar uchun mavjud: AVR28DAl28, AVR64DAl28, AVR32DA 128 va AVR48DA 128.
3.13. Versiya 2.05
Pulingiz uchun ko'proq bitlar Ushbu kompilyator va litsenziya menejerining macOS versiyasi endi 64 bitli ilovadir. Bu kompilyator macOS ning so'nggi versiyalarida ogohlantirishlarsiz o'rnatilishini va ishlashini ta'minlaydi.
Dastur xotirasidagi Const ob'ektlari. Endi kompilyator operativ xotirada emas, balki const-mavjud ob'ektlarni dasturning Flash xotirasiga joylashtirishi mumkin. Kompilyator shunday o'zgartirildiki, cons t-malakali global ma'lumotlar dastur flesh xotirasida saqlanadi va bu ma'lumotlarga tegishli dastur xotirasi ko'rsatmalari yordamida bevosita va bilvosita kirish mumkin. Ushbu yangi xususiyat sukut bo'yicha yoqilgan, lekin uni -mno-const-data-in-progmem opsiyasi yordamida o'chirib qo'yish mumkin. Avrxmega3 va avrtiny arxitekturalari uchun bu xususiyat talab qilinmaydi va har doim o'chirib qo'yiladi, chunki dastur xotirasi ushbu qurilmalar uchun ma'lumotlar manzil maydoniga joylashtirilgan.
Ushbu kompilyatorning standart litsenziyasiz (bepul) versiyalari endi 2-darajagacha optimallashtirish imkonini beradi. Bu standart litsenziya yordamida ilgari mumkin bo'lgan bir xil bo'lmasa-da, shunga o'xshash chiqishga imkon beradi.
Xush kelibsiz AVRASM2 2-bitli qurilmalar uchun AVRASM8 assembler endi XC8 kompilyator o'rnatuvchisiga kiritilgan. Ushbu assembler XC8 kompilyatori tomonidan ishlatilmaydi, lekin qo'lda yozilgan yig'ish manbasiga asoslangan loyihalar uchun mavjud.
Yangi qurilmalarni qo'llab-quvvatlash quyidagi qismlar uchun mavjud: ATMEGA1608, ATMEGA1609, ATMEGA808 va ATMEGA809.
3.14. Versiya 2.00
Yuqori darajali drayver Xc8-cc deb nomlangan yangi drayver endi oldingi avr-gcc drayveri va xc8 drayveri ustida joylashgan va u maqsadli qurilmani tanlash asosida tegishli kompilyatorni chaqirishi mumkin. Ushbu drayver GCC uslubidagi variantlarni qabul qiladi, ular tarjima qilingan yoki bajarilayotgan kompilyatorga uzatiladi. Ushbu drayver o'xshash semantikaga ega shunga o'xshash variantlar to'plamini istalgan AVR yoki PIC maqsadi bilan ishlatishga imkon beradi va shuning uchun kompilyatorni chaqirishning tavsiya etilgan usuli hisoblanadi. Agar kerak bo'lsa, eski avr-gcc drayverini oldingi kompilyator versiyalarida qabul qilingan eski uslub variantlari yordamida to'g'ridan-to'g'ri chaqirish mumkin.
Umumiy C interfeysi Ushbu kompilyator endi MPLAB Common C interfeysiga mos kelishi mumkin, bu esa manba kodini barcha MPLAB XC kompilyatorlarida osonroq ko'chirish imkonini beradi. -mext=cci opsiyasi ko'plab til kengaytmalari uchun muqobil sintaksisni yoqish uchun ushbu xususiyatni talab qiladi.
Yangi kutubxonachi haydovchisi Yangi kutubxonachi haydovchisi avvalgi PIC kutubxonachisi va AVR avr-ar kutubxonachisining tepasida joylashgan. Ushbu drayver GCC-arxiv uslubidagi variantlarni qabul qiladi, ular tarjima qilingan yoki bajarilayotgan kutubxonachiga uzatiladi. Yangi drayver har qanday PIC yoki AVR kutubxonasini yaratish yoki manipulyatsiya qilish uchun o'xshash semantikaga ega o'xshash variantlar to'plamidan foydalanishga imkon beradi. file va shuning uchun kutubxonachini chaqirishning tavsiya etilgan usuli hisoblanadi. Agar eski loyihalar uchun kerak bo'lsa, avvalgi kutubxonachi oldingi kompilyator versiyalarida qabul qilingan eski uslubdagi variantlardan foydalangan holda to'g'ridan-to'g'ri chaqirilishi mumkin.
Migratsiya muammolari
Quyida kompilyator tomonidan boshqa yo'l bilan boshqariladigan funksiyalar keltirilgan. Agar kodni ushbu kompilyator versiyasiga o'tkazsangiz, ushbu o'zgarishlar manba kodingizga o'zgartirish kiritishni talab qilishi mumkin. Sarlavhadagi versiya raqami keyingi o'zgarishlarni qo'llab-quvvatlash uchun birinchi kompilyator versiyasini bildiradi.
4.1. Versiya 2.41
Noto'g'ri fma funktsiyalari olib tashlandi (XC8-2913) C99 standart kutubxonasi fma 0 -oilaviy funktsiyalar ( ) bitta yaxlitlash uchun cheksiz aniqlik bilan ko'paytirish-qo'shishni hisoblamadi, balki har bir operatsiyada yaxlitlash xatolarini to'pladi. Bu funksiyalar taqdim etilgan kutubxonadan olib tashlandi.
4.2. Versiya 2.40
Yo'q.
4.3. Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Yo'q.
4.4. Versiya 2.36 Yo'q.
4.5. Versiya 2.35
String-to-baslar bilan ishlash (XC8-2420) Boshqa XC kompilyatorlari bilan mos kelishini taʼminlash uchun XC8 string-to funksiyalari, masalan, strtol () va boshqalar, agar koʻrsatilgan baza 36 dan katta boʻlsa, endi kirish satrini aylantirishga urinmaydi. va buning o'rniga errno ni EINVAL ga o'rnatadi. C standarti ushbu asosiy qiymatdan oshib ketganda funktsiyalarning harakatini aniqlamaydi.
Noto'g'ri tezlikni optimallashtirish 3-darajali optimallashtirishlarni tanlashda (-03) protsessual abstraksiyani optimallashtirish yoqilgan edi. Ushbu optimallashtirish kod tezligi hisobiga kod hajmini kamaytiradi, shuning uchun bajarilmasligi kerak edi. Ushbu optimallashtirish darajasidan foydalanadigan loyihalar ushbu versiya bilan tuzilganida kod hajmi va bajarish tezligidagi farqlarni ko'rishi mumkin.
Kutubxona funksionalligi Ko'pgina standart C kutubxonasi funktsiyalari uchun kod endi Microchipning Yagona standart kutubxonasidan olingan bo'lib, u avvalgi avr-libc kutubxonasi tomonidan taqdim etilganidan ba'zi hollarda boshqacha xatti-harakatlarni namoyon qilishi mumkin. Misol uchunample, endi formatlanganni yoqish uchun 1printf flt kutubxonasiga (-1printf_flt opsiyasi) ulanish shart emas. I0 float-format spetsifikatsiyalarini qo'llab-quvvatlash. Aqlli I0 Microchip Unified Standard Library xususiyatlari bu variantni ortiqcha qiladi. Bundan tashqari, flesh-da const satrlarida ishlaydigan string va xotira funktsiyalari (masalan, strcpy_P ( ) va boshqalar) uchun _P qo'shimchali tartiblardan foydalanish endi kerak emas. Standart C tartiblari (masalan, strcpy ) const-data-in-data-in-program-xotira funksiyasi yoqilgan bo'lsa, bunday ma'lumotlar bilan to'g'ri ishlaydi.
4.6. Versiya 2.32
Yo'q.
4.7. Versiya 2.31
Yo'q.
4.8. Versiya 2.30
Yo'q.
4.1. Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Yo'q.
4.2. Versiya 2.20
DFP tartibi oʻzgartirildi Endi kompilyator DFP (Device Family Packs) tomonidan foydalaniladigan boshqa tartibni qabul qiladi. Bu eski DFP ushbu nashr bilan ishlamasligi va eski kompilyatorlar eng so'nggi DFPlardan foydalana olmasligini anglatadi.
4.3. Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
4.4. Versiya 2.10
Yo'q
4.5. Versiya 2.05
Dastur xotirasidagi Const ob'ektlari E'tibor bering, sukut bo'yicha const-mavjud ob'ektlar dastur xotirasiga joylashtiriladi va ularga kirish mumkin (rangi tasvirlanganidek). Bu sizning loyihangiz hajmi va bajarilish tezligiga ta'sir qiladi, lekin RAMdan foydalanishni kamaytirishi kerak. Agar kerak bo'lsa, bu xususiyatni -mnoconst-data-in-progmem opsiyasi yordamida o'chirib qo'yish mumkin.
4.6. Versiya 2.00
Konfiguratsiya sug'urtalari Qurilma konfiguratsion sigortalari endi konfiguratsiya pragmasi, so'ngra sug'urta holatini belgilash uchun qiymat juftliklari yordamida dasturlashtirilishi mumkin, masalan.
#pragma konfiguratsiyasi WDTON = SET
#pragma konfiguratsiyasi BODLEVEL = BODLEVEL_4V3
Mutlaq ob'ektlar va funktsiyalar Ob'ektlar va funksiyalar endi CCI (manzil) spetsifikatsiyasi yordamida xotiradagi ma'lum bir manzilga joylashtirilishi mumkin, masalan.ampga:
#o'z ichiga oladi
int foobar_at (0x800100);
char __at(0x250) getID(int ofset) {…}
Ushbu spetsifikatsiyaga argument bo'lishi kerak birinchi bayt yoki ko'rsatma joylashtiriladigan manzilni ifodalovchi konstanta. RAM manzillari 0x800000 ofset yordamida ko'rsatilgan. Ushbu xususiyatdan foydalanish uchun SSPni yoqing.
Yangi uzilish funksiyasi sintaksisi Endi kompilyator C funktsiyalari uzilishlar ishlovchilari ekanligini ko'rsatish uchun CCI _interrupt (num) spetsifikatsiyasini qabul qiladi. Spesifikator uzilish raqamini oladi, masalanampga:
#o'z ichiga oladi
bekor __interrupt(SPI_STC_vect_num) spi_Isr(void) {…}
Tugallangan muammolar
Quyida kompilyatorga kiritilgan tuzatishlar keltirilgan. Ular yaratilgan koddagi xatolarni tuzatishi yoki kompilyatorning ishini foydalanuvchi qo'llanmasi tomonidan mo'ljallangan yoki ko'rsatilganiga o'zgartirishi mumkin. Sarlavhalardagi versiya raqami keyingi muammolar uchun tuzatishlarni o'z ichiga olgan birinchi kompilyator versiyasini bildiradi. Sarlavhadagi qavsdagi yorliq(lar) kuzatuv ma'lumotlar bazasida ushbu muammoning identifikatsiyasidir. Agar qo'llab-quvvatlash xizmatiga murojaat qilishingiz kerak bo'lsa, ular foydali bo'lishi mumkin.
Esda tutingki, qurilmaga tegishli ayrim muammolar qurilma bilan bog‘langan Device Family Pack (DFP) da tuzatilgan. DFP-larga kiritilgan o'zgartirishlar va eng so'nggi paketlarni yuklab olish uchun MPLAB Pack Manager-ga qarang.
5.1. Versiya 2.41
Ventura (XC8-3088) Dongles-da dongle muammolari kompilyatorni litsenziyalash uchun foydalanilgan macOS Ventura xostlarida toʻgʻri oʻqilmagan boʻlishi mumkin, bu esa litsenziyalashda xatoliklarga olib kelishi mumkin. XCLM litsenziya menejeriga kiritilgan o'zgartirishlar bu muammoni hal qiladi.
Xotirani noto'g'ri taqsimlash (XC8-2925) Standart kutubxona xotirasini boshqarish funksiyalari (malloc () va boshqalar) yordamida xotiradan SIZE_MAX bayt (yoki unga yaqin qiymat) ajratishga urinish noto‘g‘ri amalga oshirildi. Oddiy dinamik xotirani taqsimlash dasturidan foydalanganda so'ralgan blokga qo'shimcha ravishda qo'shimcha baytlar kerakligini hisobga olmadi. Endi NULL ko'rsatkich qaytariladi va bunday holatlarda xatolik ENOMEM ga o'rnatiladi.
Noto'g'ri fma funktsiyalari olib tashlandi (XC8-2913) C99 standart kutubxona fma ( ) -oila funktsiyalari ( ) bitta yaxlitlash uchun cheksiz aniqlik bilan ko'paytirish-qo'shishni hisoblamadi, balki har bir operatsiyada yaxlitlash xatolarini to'pladi. Bu funksiyalar taqdim etilgan kutubxonadan olib tashlandi.
Satrni konvertatsiya qilishda noto'g'ri ishlash (XC8-2921, XC8-2652) Agar strtod Cr tomonidan konvertatsiya qilish uchun "mavzu ketma-ketligi" eksponensial formatdagi suzuvchi nuqtali raqamga o'xshab ko'rinadigan raqamni o'z ichiga olgan bo'lsa va e/E belgisidan keyin kutilmagan belgi mavjud bo'lsa, endptr taqdim etilgan bo'lsa, unga quyidagi manzil tayinlangan: u e/E dan keyingi belgiga ishora qilgan bo'lsa, e/E belgisining o'ziga ishora qilishi kerak edi, chunki u o'zgartirilmagan. Misol uchunample, strtod ("100exx", &ep) 100.00 qiymatini qaytarishi va ep ni satrning "exx" qismiga ishora qilish uchun o'rnatishi kerak, holbuki funktsiya to'g'ri qiymatni qaytargan, lekin ep ni satrning "xx" qismiga ishora qilib o'rnatgan. .
5.2. Versiya 2.40
Juda xotirjam (XCS-2876) -mrelax opsiyasidan foydalanganda kompilyator ba'zi bo'limlarni birga ajratmadi, natijada kod o'lchamlari kamroq bo'ldi. Bu yangi MUSL kutubxonalaridan foydalangan kod yoki zaif belgilar bilan sodir bo'lishi mumkin.
Xaritalash xususiyati ogohlantirishda ko'rsatilganidek o'chirilmagan (XC8-2875) Const-data-in-config-mappedprogmem xususiyati yoqilgan const-data-in-progmem xususiyatiga bog'liq. Agar const-data-inconfig-mapped-progmem funksiyasi opsiya yordamida aniq yoqilgan boʻlsa va const-data-inprogmem funksiyasi oʻchirilgan boʻlsa, const-data-in-con fig. mapped-progmem funksiyasi avtomatik ravishda o'chirilgan edi, bu mutlaqo to'g'ri emas edi. Ushbu vaziyatda const-data-in-config-mapped-progmem xususiyati endi to'liq o'chirib qo'yilgan.
DFP NVMCTRL (XC8-2848) toʻgʻri kirish uchun oʻzgaradi AVR64EA qurilmalari tomonidan ishlatiladigan ishga tushirish kodi NVMCTRL registri Konfiguratsiyani oʻzgartirish himoyasi (CCP) ostida ekanligini va I0 SFR ni const-data-in-configmapped-progmem tomonidan foydalaniladigan sahifaga oʻrnatolmasligini hisobga olmadi. kompilyator xususiyati. AVR-Ex_DFP 2.2.55 versiyasida kiritilgan o'zgartirishlar ishga tushirish kodini ushbu registrga to'g'ri yozish imkonini beradi.
Oldini olish uchun DFP o'zgarishlari flesh xaritalash (XC8-2847) AVR128DA28/32/48/64 Silicon Errata (D580000882) da xabar qilingan flesh-xaritalash qurilmasi xususiyati bilan bog'liq muammoni hal qilish amalga oshirildi. Const-data-in-config-mapped-progmem kompilyator xususiyati ta'sirlangan qurilmalar uchun sukut bo'yicha qo'llanilmaydi va bu o'zgarish AVR-Dx_DFP 2.2.160 versiyasida paydo bo'ladi.
sinhf yoki coshf bilan qurish xatosi (XC8-2834) sinhf () yoki coshf () kutubxona funksiyalaridan foydalanishga urinishlar aniqlanmagan havolani tavsiflovchi havola xatosiga olib keldi. Havola qilingan etishmayotgan funksiya endi kompilyator taqsimotiga kiritilgan.
Nopa bilan xatolar yaratish (XC,8-2833) Asm ( ) yordamida assembler nomi ko'rsatilgan funksiya bilan nopa atributidan foydalanish assemblerdan xato xabarlarini keltirib chiqardi. Bu kombinatsiya mumkin emas.
Ko'rsatkich argumentlari bilan o'zgaruvchan funksiya xatosi (XC8-2755, XC8-2731) Argumentlar soni o'zgarmaydigan funksiyalar, const-data-in-progmem funksiyasi yoqilganda, 24-bitli (memx tipidagi) ko'rsatkichlar o'zgarmaydigan argumentlar ro'yxatiga o'tkazilishini kutadi. Ma'lumotlar xotirasiga ko'rsatgich bo'lgan argumentlar 16-bitli ob'ektlar sifatida uzatildi va ular oxir-oqibat o'qilganda kodning ishlamay qolishiga olib keldi. Constdata-in-progmem funksiyasi yoqilganda, barcha 16-bitli koʻrsatkichlar argumentlari endi 24-bitli koʻrsatkichlarga aylantiriladi.
strtoxxx kutubxona funksiyalari ishlamayapti (XC8-2620) Const-data-in-progmem funksiyasi yoqilganda, strtoxxx kutubxonasi funksiyalaridagi endptr parametri dastur xotirasida boʻlmagan manba qator argumentlari uchun toʻgʻri yangilanmagan.
Yaroqsiz translatsiyalar uchun ogohlantirishlar (XC8-2612) Agar const-in-progmem funksiyasi yoqilgan bo'lsa va satr literalining manzili aniq ma'lumotlar manzil maydoniga uzatilsa (const kvalfikatorini tashlab qo'ysa) endi kompilyator xatolik chiqaradi.ample, (uint 8_t *) "Salom dunyo!". Agar const ma'lumotlar ko'rsatgichi ma'lumotlar manzil maydoniga aniq uzatilganda manzil noto'g'ri bo'lishi mumkin bo'lsa, ogohlantirish muammo hisoblanadi.
Boshlanmagan const ob'ektlarini joylashtirish (XC8-2408) Boshlanmagan const va const uchuvchan ob'ektlari dastur xotirasining to'liq yoki bir qismini ma'lumotlar manzil maydoniga joylashtiradigan qurilmalarda dastur xotirasiga joylashtirilmadi. Ushbu qurilmalar uchun bunday ob'ektlar endi dastur xotirasiga joylashtiriladi, bu ularning ishlashini boshqa qurilmalar bilan moslashtiradi.
5.3. Versiya 2.39 (Funktsional xavfsizlik versiyasi)
Yo'q.
5.4. Versiya 2.36
Kechikishdagi xato (XC8-2774) Standart Erkin rejim optimallashtirishlaridagi kichik oʻzgarishlar operand ifodalarining oʻrnatilgan kechikish funksiyalariga doimiy katlanishini oldini oldi, natijada ular doimiy boʻlmaganlar sifatida koʻrib chiqildi va xatolikni keltirib chiqardi: oʻrnatilgan avr delay_cycles kompilyatsiya vaqtining butun son konstantasini kutadi.
5.5. Versiya 2.35
_at (XC8-2653) yordamida qo'shni taqsimlash Bir xil nomdagi va _at ( ) dan foydalangan holda bir nechta ob'ektlarning joylarini ketma-ket joylashtirish to'g'ri ishlamadi. Misol uchunampga:
const char arr1[] __attribute__((bo'lim(".mysec"))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((bo'lim(".mysec"))) = {0xEF, 0xFE};
arr2 ni arr1 dan keyin darhol qo'yish kerak edi.
Bo'lim boshlang'ich manzillarini belgilash (XC8-2650) The -W1, -section-start opsiyasi bo'limlarni belgilangan boshlang'ich manziliga jimgina joylashtira olmadi. Bu muammo har qanday maxsus nomlangan bo'limlar uchun tuzatildi; biroq, u hech qanday standart bo'limlar uchun ishlamaydi, masalan. matn yoki . bss, bu -W1, -T opsiyasi yordamida joylashtirilishi kerak.
Bog'lanish vaqtida ishlamay qoladi (XC8-2647) -mrelax optimallashtirish yoqilganda va mavjud xotiraga mos kelmaydigan kod yoki ma'lumotlar bo'limlari mavjud bo'lganda, bog'lovchi ishlamay qoldi. Endi, bunday holatda, xato xabarlari o'rniga chiqariladi.
Yo'q, orqaga qaytish (XC8-2646) The -nofallback opsiyasi to'g'ri amalga oshirilmagan va hujjatlashtirilmagan. Bu endi kompilyator litsenziyasiz bo'lsa, kompilyator pastroq optimallashtirish sozlamalariga qaytmasligini ta'minlash uchun tanlanishi mumkin va buning o'rniga xatolik chiqaradi.
Noto'g'ri tezlikni optimallashtirish (X03-2637) 3-darajali optimallashtirishlarni tanlashda (-03) protsessual abstraksiyani optimallashtirish yoqilgan edi. Ushbu optimallashtirish kod tezligi hisobiga kod hajmini kamaytiradi, shuning uchun bajarilmasligi kerak edi.
Yomon EEPROM kirish (XC8-2629) The -mconst-data-in-progmem opsiyasi yoqilganda (bu standart holat) Xmega qurilmalarida eeprom_read_block tartibi to'g'ri ishlamadi, natijada EEPROM xotirasi to'g'ri o'qilmaydi.
Yaroqsiz xotira taqsimoti (XC8-2593, XC8-2651) -Matn yoki -Tdata bog'lovchi varianti (masalanample -vl drayveri opsiyasi yordamida o'tdi) ko'rsatilgan, tegishli matn/ma'lumotlar hududi kelib chiqishi yangilangan; biroq, oxirgi manzil mos ravishda sozlanmagan, bu esa mintaqaning maqsadli qurilmaning xotira diapazonidan oshib ketishiga olib kelishi mumkin edi.
Haddan tashqari atributlangan funksiya bilan ishdan chiqish (XC8-2580) Agar funksiya bir nechta uzilish, signal yoki nmi atributlari, masalan, atribut ( ( signal , interrupt ) ) yordamida e'lon qilingan bo'lsa, kompilyator ishdan chiqdi.
Yaroqsiz ATtiny uzilish kodi (XC8-2465) ATtiny qurilmalarini qurishda va optimallashtirishlar o'chirilganda (-00), uzilish funktsiyalari diapazondan tashqaridagi operandni assembler xabarlarini ishga tushirgan bo'lishi mumkin.
Tanlovlar oʻtkazilmaydi (XC8-2452) Variantdan vergul bilan ajratilgan bir nechta bog'lovchi opsiyalari bilan foydalanilganda, barcha bog'lovchi variantlari bog'lovchiga o'tkazilmagan.
Dastur xotirasini bilvosita o'qish xatosi (X03-2450) Ba'zi hollarda kompilyator ikki bayt qiymatini ko'rsatgichdan dastur xotirasiga o'qishda ichki xato (tanib bo'lmaydigan insn) hosil qildi.
5.6. Versiya 2.32
Ikkinchi kirish kutubxona ishlamayapti (XC8-2381) Xc8-ar ning Windows versiyasini chaqirish. Mavjud kutubxona arxiviga ikkinchi marta kirish uchun .exe kutubxonasi arxivchisi xato xabari nomini o'zgartirib bo'lmadi.
5.7. Versiya 2.31
Tushuntirilmagan kompilyator nosozliklar (XC8-2367) Tizimning vaqtinchalik katalogi "." nuqtasini o'z ichiga olgan yo'lga o'rnatilgan Windows platformalarida ishlayotganda. belgi bo'lsa, kompilyator bajarolmagan bo'lishi mumkin.
5.8. Versiya 2.30
Belgilanganidan keyin global teglar noto'g'ri joylashtirilgan (XC8-2299) Protsessual abstraktsiya yo'li bilan ajratilgan yig'ish ketma-ketligi ichida global teglarni joylashtiradigan qo'lda yozilgan yig'ish kodi to'g'ri o'zgartirilmagan bo'lishi mumkin.
Tinchlantiruvchi halokat (XC8-2287) Bo'lim oxirida bo'lmagan ret ko'rsatmalarini o'chirishga harakat qilganda -mrelax opsiyasidan foydalanish bog'lovchining ishdan chiqishiga olib kelgan bo'lishi mumkin.
Yorliqlarni qiymat sifatida optimallashtirishda ishdan chiqish (XC8-2282) “Qiymatlar sifatida teglar” GNU C tili kengaytmasidan foydalanadigan kod protsessual abstraksiyani optimallashtirish ishlamay qolishiga olib kelgan bo‘lishi mumkin, bunda VMA diapazoni aniqlangan tuzatish xatosi yuzaga kelgan.
Unchalik doimiy emas (XC8-2271) st rstr ( ) va boshqa funksiyalar uchun prototiplar -mconst-data-inprogmem xususiyati o'chirilgan bo'lsa, qaytarilgan qator ko'rsatkichlarida nostandart const kvalifierni endi belgilamang. Avrxmega3 va avrtiny qurilmalarida bu xususiyat doimiy ravishda yoqilganligini unutmang.
Yo'qotilgan ishga tushirgichlar (XC8-2269) Qachon ortiq Tarjima birligidagi bitta oʻzgaruvchi boʻlimga joylashtirilgan (_boʻlim yoki _attribute_ ( (boʻlim) ) yordamida) va birinchi bunday oʻzgaruvchi nolga teng ishga tushirilgan yoki ishga tushirgichga ega emas edi, xuddi shu tarjima birligida joylashtirilgan boshqa oʻzgaruvchilar uchun initsializatorlar xuddi shu bo'limda yo'qolgan.
5.1. Versiya 2.29 (Funktsional xavfsizlik versiyasi)
Yo'q.
5.2. Versiya 2.20
Uzoq buyruqlar bilan xato (XC8-1983) AVR nishonidan foydalanganda kompilyator a bilan to'xtagan bo'lishi mumkin file xato topilmadi, agar buyruq qatori juda katta bo'lsa va tirnoq, teskari chiziq va boshqalar kabi maxsus belgilarni o'z ichiga olgan bo'lsa.
Tayinlanmagan rodata boʻlimi (XC8-1920) AVR bog'lovchisi avrxmega3 va avrtiny arxitekturalarini qurishda maxsus rodata bo'limlari uchun xotirani tayinlay olmadi, bu esa xotiraning o'zaro bog'liqligi xatolarini keltirib chiqarishi mumkin.
5.3. Versiya 2.19 (Funktsional xavfsizlik versiyasi)
Yo'q.
5.4. Versiya 2.10
Ko'chirishdagi muvaffaqiyatsizliklar (XC8-1891) Eng yaxshi mos ajratuvchi bog'lovchi bo'shashgandan so'ng bo'limlar o'rtasida xotira "teshiklari" qoldirish edi. Xotirani parchalashdan tashqari, bu kompyuterga nisbatan o'tish yoki qo'ng'iroqlar diapazonidan tashqariga chiqish bilan bog'liq bo'lgan bog'lovchining joylashuvini o'zgartirishda nosozliklar bo'lish ehtimolini oshirdi.
Bo'shashish orqali o'zgartirilmagan ko'rsatmalar (XC8-1889) Bo'shashtirilsa, maqsadlariga erishish mumkin bo'lgan sakrash yoki chaqiruv ko'rsatmalari uchun bog'lovchi bo'shashishi sodir bo'lmadi.
Yo'qolgan funksionallik (XC8E-388) dan bir nechta ta'riflar clock_div_t va clock_prescale set () kabi ATmega324PB, ATmega328PB, ATtiny441 va ATtiny841 kabi qurilmalar uchun aniqlanmagan.
Makroslar etishmayapti _XC8_MODE_, _XC8_VERS ION, _XC va _XC8 preprotsessor makrolari kompilyator tomonidan avtomatik ravishda aniqlanmagan. Bular hozir mavjud.
5.5. Versiya 2.05
Ichki kompilyator xatosi (XC8-1822) Windows ostida qurishda kodni optimallashtirishda ichki kompilyator xatosi yuzaga kelishi mumkin.
RAMning to'lib ketishi aniqlanmadi (XC8-1800, XC8-1796) Mavjud operativ xotiradan oshib ketgan dasturlar ba'zi hollarda kompilyator tomonidan aniqlanmadi, natijada ish vaqti kodi ishlamay qoldi.
O'tkazib yuborilgan flesh xotira (XC8-1792) Avrxmega3 va avrtiny qurilmalari uchun flesh-xotira qismlari MPLAB X tomonidan dasturlashtirilmagan bo'lishi mumkin. IDE.
Asosiy vazifani bajarmaslik (XC8-1788) Dasturda global o'zgaruvchilar aniqlanmagan ba'zi holatlarda ishga tushirish kodi chiqmadi va asosiy ( ) funksiyaga erishilmadi.
Noto'g'ri xotira ma'lumotlari (XC8-1787) Avrxmega3 va avrtiny qurilmalari uchun avr o'lchamli dastur faqat o'qish uchun mo'ljallangan ma'lumotlar dastur xotirasi o'rniga operativ xotirani iste'mol qilayotgani haqida xabar bergan.
Dastur xotirasini noto'g'ri o'qish (XC8-1783) Dastur xotirasi ma'lumotlar manzil maydoniga joylashtirilgan va PROGMEM makro/atributidan foydalangan holda ob'ektlarni belgilaydigan qurilmalar uchun tuzilgan loyihalar ushbu ob'ektlarni noto'g'ri manzildan o'qigan bo'lishi mumkin.
Atributlar bilan ichki xato (XC8-1773) Agar ko'rsatgich ob'ektlari bilan belgilagan bo'lsangiz, ichki xatolik yuz berdi
_at () yoki atribut() tokenlari koʻrsatgich nomi va bekor qilingan tur oʻrtasida, masalan,ample, char *
_at (0x800150) cp; Agar bunday kodga duch kelsangiz, endi ogohlantirish beriladi.
Asosiy ishga tushmaslik (XC8-1780, XC8-1767, XC8-1754) EEPROM o'zgaruvchilaridan foydalanish yoki konfiguratsiya pragmasidan foydalangan holda sug'urtalarni aniqlash asosiy ( ) ga yetmasdan oldin ishga tushirish kodida noto'g'ri ma'lumotlarni ishga tushirishga va/yoki dastur bajarilishini blokirovka qilishga olib kelishi mumkin.
Kichik qurilmalarda sug'urta xatosi (XC8-1778, XC8-1742) Attiny4/5/9/10/20/40 qurilmalari sarlavhasida noto'g'ri sug'urta uzunligi ko'rsatilgan. fileSigortalarni aniqlagan kodni yaratishga urinishda bog'lovchi xatolarga olib keladigan s.
Segmentatsiya xato (XC8-1777) Vaqti-vaqti bilan segmentatsiya xatosi tuzatildi.
Assembler ishdan chiqishi (XC8-1761) Kompilyator Ubuntu 18 ostida ishlaganda avr-as assembler ishdan chiqqan bo'lishi mumkin.
Ob'ektlar tozalanmagan (XC8-1752) Boshlanmagan statik saqlash muddati ob'ektlari ishga tushirish kodi bilan tozalanmagan bo'lishi mumkin.
Qarama-qarshi qurilma spetsifikatsiyasi e'tiborga olinmadi (XC8-1749) Bir nechta qurilma spetsifikatsiyasi opsiyalaridan foydalanilganda va turli qurilmalarni ko'rsatganida kompilyator xatolikka yo'l qo'ymadi.
Uyma tomonidan xotira buzilishi (XC8-1748) The _heap_start belgisi noto'g'ri o'rnatilgan edi, buning natijasida oddiy o'zgaruvchilar to'p tomonidan buzilishi mumkin edi.
Bog'lovchini ko'chirish xatosi (XC8-1739) Kodda rjmp yoki maqsad aniq 4k bayt masofada joylashgan rcall bo'lsa, bog'lovchini ko'chirish xatosi chiqarilgan bo'lishi mumkin.
5.6. Versiya 2.00
Yo'q.
Ma'lum muammolar
Quyida kompilyatorning ishlashidagi cheklovlar mavjud. Bular umumiy kodlash cheklovlari yoki foydalanuvchi qo'llanmasida keltirilgan ma'lumotlardan chetga chiqishlar bo'lishi mumkin. Sarlavhadagi qavsdagi yorliq(lar) kuzatuv maʼlumotlar bazasida ushbu muammoning identifikatsiyasidir. Agar qo'llab-quvvatlash xizmatiga murojaat qilishingiz kerak bo'lsa, bu foydali bo'lishi mumkin. Yorliqlari bo'lmagan elementlar modi operandini tavsiflovchi va doimiy amalda qolishi mumkin bo'lgan cheklovlardir.
6.1. MPLAB X IDE Integratsiya
MPLAB IDE integratsiya Agar kompilyator MPLAB IDE-dan foydalanilsa, kompilyatorni o'rnatishdan oldin MPLAB IDE-ni o'rnatishingiz kerak.
6.2. Kod yaratish
Segfault with section-anchors option (XC8-3045) Oʻzgaruvchan argumentlar roʻyxati bilan funksiyalarni aniqlagan va -fsection-anchors opsiyasidan foydalanadigan dastur kompilyatorning ichki xatosini keltirib chiqargan boʻlishi mumkin: Segmentatsiya xatosi.
Nosozliklarni tuzatish maʼlumotlari sinxronlashtirilmagan (XC8-2948) Bog'lovchi bo'shashishini optimallashtirish ko'rsatmalarni qisqartirganda (masalanample qo'ng'iroqqa qo'ng'iroq qilish bo'yicha ko'rsatmalar), agar bo'limda bir nechta qisqartirish operatsiyalari bajarilgan bo'lsa, manzilli xaritalash manba liniyasi sinxronlashtirilmasligi mumkin.
Quyidagi misolda, masalanample, nisbiy qo'ng'iroqlarga bo'shashadigan fooga ikkita qo'ng'iroq bor.
PA xotirasini taqsimlashda xatolik (XC8-2881) Protsessual abstraktsiya optimallashtiruvchilaridan foydalanganda, dastur mavjud bo'sh joyga sig'ishi kerak bo'lsa ham, kod hajmi qurilmadagi mavjud dastur xotirasi miqdoriga yaqin bo'lsa, bog'lovchi xotirani ajratish xatolari haqida xabar berishi mumkin.
Unchalik aqlli emas Smart-I0 (XC8-2872) Const-data-in-progmem funksiyasi oʻchirilgan boʻlsa yoki qurilmada uning barcha fleshlari maʼlumotlar xotirasiga joylashtirilgan boʻlsa, kompilyatorning smart-io funksiyasi snprint f funksiyasi uchun haqiqiy, lekin sub-optimal kodni yaratadi.
Bundan ham kamroq aqlli Smart-I0 (XC8-2869) Kompilyatorning smart-io funksiyasi -flto va -fno-builtin opsiyalaridan foydalanilganda haqiqiy, lekin suboptimal kod ishlab chiqaradi.
Faqat o‘qish uchun mo‘ljallanmagan ma’lumotlarni joylashtirish (XC8-2849) Bog'lovchi hozirda APPCODE va APPDATA xotira bo'limlari va xotira xaritasidagi [No-Read-While-Write bo'limlari haqida ma'lumotga ega emas. Natijada, bog'lovchi xotiraning mos bo'lmagan maydoniga faqat o'qish uchun ma'lumotlarni ajratishi mumkin bo'lgan kichik imkoniyat mavjud. Const-data-in-progmem funksiyasi yoqilgan bo'lsa, ayniqsa, const-data-in-config-mapped-progmem funksiyasi ham yoqilgan bo'lsa, noto'g'ri ma'lumotlarning paydo bo'lish ehtimoli ortadi. Agar kerak bo'lsa, bu xususiyatlarni o'chirib qo'yish mumkin.
Ob'ekt file qayta ishlash tartibi (XC8-2863) Ob'ektlarning tartibi files bog'lovchi tomonidan qayta ishlanadi protsessual abstraktsiya optimallashtirishdan foydalanishga qarab farq qilishi mumkin (-mpa varianti). Bu faqat bir nechta modullarda zaif funktsiyalarni belgilaydigan kodga ta'sir qiladi.
Mutlaq bog'lovchi xatosi (XC8-2777) Agar ob'ekt RAM boshida manzilda mutlaq qilingan bo'lsa va ishga tushirilmagan ob'ektlar ham aniqlangan bo'lsa, bog'lovchi xatosi ishga tushishi mumkin.
Qisqa uyg'otish identifikatorlari (XC8-2775) ATA5700/2 qurilmalari uchun PHIDO/1 registrlari kengligi 16 bit emas, balki faqat 32 bit kengligi sifatida aniqlanadi.
Belgiga qo'ng'iroq qilishda bog'lovchining ishdan chiqishi (XC8-2758) Manba kodi -cc., –de f sym bog'lovchi opsiyasi yordamida aniqlangan belgini chaqirganda -mrelax drayver opsiyasi ishlatilsa, bog'lovchi ishlamay qolishi mumkin.
Noto'g'ri ishga tushirish (XC8-2679) U erda ba'zi global/statik bayt o'lchamdagi ob'ektlarning boshlang'ich qiymatlari ma'lumotlar xotirasiga joylashtirilganligi va ish vaqtida o'zgaruvchilarga kirish mumkin bo'lgan joy o'rtasidagi nomuvofiqlikdir.
Yomon bilvosita funksiya chaqiruvlari (XC8-2628) Ba'zi hollarda strukturaning bir qismi sifatida saqlangan funktsiya ko'rsatgichi orqali qilingan funksiya chaqiruvlari muvaffaqiyatsiz bo'lishi mumkin.
strtof o'n oltilik suzuvchilar uchun nolni qaytaradi (XC8-2626) strtof va boshqalar kutubxona funktsiyalari va scanf ( ) va boshqalar har doim ko'rsatkichni nolga ko'rsatmaydigan o'n oltilik suzuvchi nuqta sonini o'zgartiradi. Misol uchunampga:
strtof ("Oxl", &endptr);
0 qiymatini qaytaradi, men emas.
Noto'g'ri stek maslahatchisi xabarlari (XC8-2542, XC8-2541) Ba'zi hollarda, rekursiya yoki noaniq stek (ehtimol alloca() dan foydalanish orqali) haqida stek maslahatchisi ogohlantirishi chiqarilmaydi.
Ikki nusxadagi uzilish kodi bilan xatolik (XC8-2421) Agar bir nechta uzilish funksiyasi bir xil tanaga ega bo'lsa, kompilyator bitta uzilish funktsiyasini boshqasini chaqirishi uchun chiqishga ega bo'lishi mumkin. Bu barcha qo'ng'iroqlar blokirovka qilingan registrlarning keraksiz saqlanishiga olib keladi va uzilishlar joriy uzilish ishlovchisining epilogi ishga tushmasdan ham yoqiladi, bu esa kodning ishlamay qolishiga olib kelishi mumkin.
Yaroqsiz DFP yo'li bilan noto'g'ri chiqdi (XC8-2376) Agar kompilyator noto'g'ri DFP yo'li va "spec" bilan chaqirilgan bo'lsa file tanlangan qurilma uchun mavjud bo'lsa, kompilyator etishmayotgan qurilmalar oilasi to'plami haqida xabar bermayapti va buning o'rniga "spec" ni tanlamoqda. file, bu esa yaroqsiz chiqishga olib kelishi mumkin. "Xususiyatlar" files tarqatilgan DFPlar bilan yangilanmagan bo'lishi mumkin va faqat ichki kompilyator sinovlari bilan foydalanish uchun mo'ljallangan.
Xotiraning bir-biriga mos kelishi aniqlanmadi (XC8-1966) Kompilyator manzilda (_at ( ) orqali) mutlaq qilingan ob'ektlar va bo'lim ( ) spesifikacisi yordamida bir xil manzilga bog'langan boshqa ob'ektlar xotirasining o'xshashligini aniqlamaydi.
Kutubxona funktsiyalari va _memx (XC8-1763) bilan ishlamay qoldi Memx manzil maydonida argumentga ega libgcc float funksiyalari ishlamay qolishi mumkin. E'tibor bering, kutubxona tartiblari ba'zi C operatorlaridan chaqiriladi, masalanample, quyidagi kod ta'sir qiladi:
qaytish regFloatVar > memxFloatVar;
Cheklangan libgcc ilovasi (AVRTC-731) ATTiny4/5/9/10/20/40 mahsulotlari uchun libgcc-da standart C/Math kutubxonasini amalga oshirish juda cheklangan yoki mavjud emas.
Dastur xotirasi cheklovlari (AVRTC-732) 128 kb dan ortiq dastur xotirasi tasvirlari asboblar zanjiri tomonidan qo'llab-quvvatlanadi; ammo, -mre lax opsiyasidan foydalanilganda kerakli funksiya stublarini yaratish o'rniga, bo'shashmasdan va foydali xato xabarisiz bog'lovchini bekor qilish holatlari ma'lum.
Nom maydoni cheklovlari (AVRTC-733) Nomlangan manzil bo'shliqlari, foydalanuvchi qo'llanmasining Maxsus turdagi kvalifikatorlar bo'limida ko'rsatilgan cheklovlarga rioya qilgan holda asboblar zanjiri tomonidan qo'llab-quvvatlanadi.
Vaqt zonalari The kutubxona funktsiyalari GMT ni qabul qiladi va mahalliy vaqt mintaqalarini qo'llab-quvvatlamaydi, shuning uchun mahalliy vaqt ( ) gmtime ( ) bilan bir xil vaqtni qaytaradi, masalanample.
file:///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm
Hujjatlar / manbalar
![]() |
MICROCHIP MPLAB XC8 C kompilyatorni ishlab chiqish dasturi [pdf] Foydalanuvchi qo'llanmasi MPLAB XC8 C, MPLAB XC8 C kompilyatorni ishlab chiqish dasturi, kompilyatorni ishlab chiqish dasturi, ishlab chiqish dasturi, dasturiy ta'minot |




