MICROCHIP MPLAB XC8 C Compiler Software
DOKUMEN IKI NGANDUH INFORMASI PENTING GANTI KOMPILER MPLAB XC8 C nalika nargetake piranti AVR MICROCHIP.
MANGGA WACANA SADUNGE MANGKOK SOFTWARE IKI. NDELENG Cathetan rilis kompiler MPLAB XC8 C kanggo DOKUMEN PIC yen sampeyan nggunakake kompiler kanggo piranti PIC 8-BIT.
Swaraview
Pambuka
Rilis kompiler Microchip MPLAB® XC8 C iki ngemot sawetara fitur anyar, koreksi bug, lan dhukungan piranti anyar.
Tanggal Mbangun
Tanggal mbangun resmi versi kompiler iki yaiku 3 Juli 2022.
Versi sadurungé
Versi kompiler MPLAB XC8 C sadurunge yaiku 2.39, kompiler safety fungsional, dibangun ing 27 Januari 2022. Kompiler standar sadurunge yaiku versi 2.36, dibangun ing 27 Januari 2022.
Manual Keamanan Fungsional
Manual Safety Fungsional kanggo kompiler MPLAB XC kasedhiya ing paket dokumentasi nalika sampeyan tuku lisensi safety fungsional.
Lisensi Komponen lan Versi
Compiler MPLAB® XC8 C kanggo piranti AVR MCU ditulis lan disebarake miturut Lisensi Umum Umum GNU (GPL) sing tegese kode sumbere disebarake kanthi bebas lan kasedhiya kanggo umum. Kode sumber kanggo piranti ing GNU GPL bisa diundhuh kanthi kapisah saka Microchip websitus. Sampeyan bisa maca GNU GPL ing file jenenge dumunung ing subdirektori direktori instalasi sampeyan. Diskusi umum babagan prinsip sing ndasari GPL bisa ditemokake ing kene. Kode dhukungan diwenehake kanggo header files, skrip linker, lan perpustakaan runtime minangka kode kepemilikan lan ora dilindhungi ing GPL.
Compiler iki minangka implementasine saka GCC versi 5.4.0, binutils versi 2.26, lan nggunakake avr-libc versi 2.0.0.
Requirements Sistem
Compiler MPLAB XC8 C lan piranti lunak lisensi sing digunakake kasedhiya kanggo macem-macem sistem operasi, kalebu versi 64-bit ing ngisor iki: Edisi profesional Microsoft Windows 10; Ubuntu 18.04; lan macOS 10.15.5. Binari kanggo Windows wis ditandatangani kode. Binari kanggo mac OShave wis ditandatangani kode lan diaktakake.
Yen sampeyan mbukak server lisensi jaringan, mung komputer kanthi sistem operasi sing didhukung dening kompiler sing bisa digunakake kanggo dadi tuan rumah server lisensi. Ing versi xclm 2.0, server lisensi jaringan bisa diinstal ing platform Microsoft Windows Server, nanging server lisensi ora perlu mbukak ing versi server sistem operasi.
Piranti sing Didhukung
Compiler iki ndhukung kabeh piranti AVR MCU 8-bit sing dikenal nalika diluncurake. Deleng (ing direktori doc compiler) kanggo dhaptar kabeh piranti sing didhukung. Iki files uga dhaptar setelan bit konfigurasi kanggo saben piranti.
Edisi lan Nganyarke Lisensi
Compiler MPLAB XC8 bisa diaktifake minangka produk dilisensi (PRO) utawa ora dilisensi (Gratis). Sampeyan kudu tuku kunci aktivasi kanggo menehi lisensi kompiler. A lisènsi ngidini kanggo tingkat sing luwih dhuwur saka Optimization dibandhingake Free produk. Compiler sing ora dilisensi bisa dioperasikake tanpa wates tanpa lisensi.
Compiler Safety Fungsional MPLAB XC8 kudu diaktifake kanthi lisensi safety fungsional sing dituku saka Microchip. Compiler ora bakal operate tanpa lisensi iki. Sawise diaktifake, sampeyan bisa milih level optimasi lan nggunakake kabeh fitur kompiler. Rilis Compiler Keamanan Fungsional MPLAB XC iki ndhukung Lisensi Server Jaringan.
Deleng dokumen Nginstal lan Lisensi MPLAB XC C Compiler (DS50002059) kanggo informasi babagan jinis lisensi lan instalasi kompiler kanthi lisensi.
Instalasi lan aktifitas
Deleng uga bagean Masalah lan Watesan Migrasi kanggo informasi penting babagan manajer lisensi paling anyar sing kalebu ing kompiler iki.
Yen nggunakake MPLAB IDE, priksa manawa sampeyan nginstal MPLAB X IDE versi 5.0 utawa luwih anyar sadurunge nginstal alat iki. Mungkasi IDE sadurunge nginstal compiler. Jalanake aplikasi installer compiler .exe (Windows), .run (Linux) utawa app (macOS), contone XC8-1.00.11403-windows.exe lan tindakake pituduh ing layar.
Direktori instalasi gawan dianjurake. Yen sampeyan nggunakake Linux, sampeyan kudu nginstal compiler nggunakake terminal lan saka akun root. Instal nggunakake akun macOS kanthi hak istimewa administrator.
Aktivasi saiki ditindakake kanthi kapisah kanggo instalasi. Deleng dokumen License Manager kanggo MPLAB® XC C Compiler (DS52059) kanggo informasi luwih lengkap.
Yen sampeyan milih nglakokake kompiler miturut lisensi evaluasi, sampeyan saiki bakal entuk bebaya sajrone kompilasi nalika sampeyan ana ing 14 dina sawise pungkasan periode evaluasi. Bebaya sing padha ditanggepi yen sampeyan ana ing 14 dina saka pungkasan langganan HPA.
Server Lisensi Jaringan XC minangka installer sing kapisah lan ora kalebu ing installer kompiler pangguna siji.
Manajer Lisensi XC saiki ndhukung roaming lisensi jaringan ngambang. Ditujukake kanggo pangguna seluler, fitur iki ngidini lisensi ngambang mateni jaringan kanggo wektu sing cendhak. Nggunakake fitur iki, sampeyan bisa medhot saka jaringan lan isih nggunakake MPLAB XC compiler. Deleng folder doc instalasi XCLM kanggo informasi luwih lengkap babagan fitur iki. MPLAB X IDE kalebu jendhela Lisensi (Alat> Lisensi) kanggo ngatur roaming kanthi visual.
Ngatasi Masalah Instalasi
Yen sampeyan ngalami kesulitan nginstal compiler ing sistem operasi Windows, coba saran ing ngisor iki.
- Jalanake instalasi minangka administrator.
- Setel idin saka aplikasi installer kanggo 'Full kontrol'. (Klik kanan file, pilih Properties, tab Security, pilih user, edit.)
- Setel ijin folder temp dadi "Kontrol Lengkap!
Kanggo nemtokake lokasi folder temp, ketik %temp% ing printah Run (tombol logo Windows + R). Iki bakal mbukak a file dialog explorer sing nuduhake direktori kasebut lan ngidini sampeyan nemtokake path folder kasebut.
Dokumentasi Compiler
Pandhuan pangguna compiler bisa dibukak saka kaca HTML sing mbukak ing browser nalika ngeklik tombol bantuan biru ing dashboard MPLAB X IDE, kaya sing dituduhake ing gambar.
Yen sampeyan nggawe target AVR 8-bit, Pandhuan Pangguna Compiler MPLAB® XC8 C kanggo AVR® MCU ngemot informasi babagan opsi lan fitur kompiler sing ditrapake kanggo arsitektur iki.
Dhukungan Pelanggan
Microchip nampani laporan bug, saran utawa komentar babagan versi kompiler iki. Mangga langsung laporan bug utawa panjalukan fitur liwat Sistem Dhukungan.
Update Dokumentasi
Kanggo versi on-line lan paling anyar saka dokumentasi MPLAB XC8, bukak Dokumentasi Teknis Online Microchip websitus.
Dokumentasi AVR anyar utawa dianyari ing rilis iki:
- Kabar hak cipta MUSL
- Nginstal lan Lisensi Compiler MPLAB XC C (revisi M)
- Pandhuan Panganggo MPLAB XC8 kanggo Insinyur Tertanam - MCU AVR (revisi A)
- MPLAB XC8 C Compiler User!s Guide for AVR MCU (revisi F)
- Microchip Unified Standard Library Reference Guide (revisi B)
Microchip Unified Standard Library Reference Guide njlèntrèhaké prilaku lan antarmuka kanggo fungsi ditetepake dening Microchip Unified Standard Library, uga dimaksudaké nggunakake jinis perpustakaan lan macro. Sawetara informasi iki sadurunge ana ing MPLAB® XC8 C Compiler User!s Guide kanggo AVR® MCU. Informasi perpustakaan khusus piranti isih ana ing pandhuan kompiler iki.
Yen sampeyan lagi miwiti nganggo piranti 8-bit lan Compiler MPLAB XC8 C, Pandhuan Panganggo MPLAB® XC8! kanggo Insinyur Tertanam - AVR® MCUs (DS50003108) duwe informasi babagan nyetel proyek ing MPLAB X IDE lan kode nulis. kanggo proyek MPLAB XC8 C pisanan sampeyan. Pandhuan iki saiki disebarake karo compiler.
Pandhuan Pangguna Hamate wis dilebokake ing direktori docs ing rilis iki. Pandhuan iki ditujokake kanggo sing mbukak Hamate minangka aplikasi mandiri.
Apa Anyar
Ing ngisor iki minangka fitur target AVR anyar sing saiki didhukung kompiler. Nomer versi ing subheadings nuduhake versi compiler pisanan kanggo ndhukung fitur-fitur sabanjure.
Versi 2.40
Dhukungan piranti anyar Dhukungan saiki kasedhiya kanggo bagean AVR ing ngisor iki: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA, lan AVR64EA48EA.
Abstraksi prosedural sing luwih apik Alat optimasi abstraksi prosedural (PA) wis ditingkatake supaya kode sing ngemot instruksi panggilan fungsi (call recall) ) bisa digarisake. Iki mung bakal kelakon yen tumpukan ora digunakake kanggo pass bantahan utawa njupuk bali Nilai saka fungsi. Tumpukan digunakake nalika nelpon fungsi karo dhaftar argumen variabel utawa nalika nelpon fungsi sing njupuk bantahan luwih saka ana ndhaftar ditetepake kanggo maksud iki. Fitur iki bisa dipateni nggunakake opsi monk-pa-outline-calls, utawa abstraksi prosedural bisa dipateni kabeh kanggo obyek. file utawa fungsi kanthi nggunakake -monk-pa-on-file lan -mo.-pa-on-function, utawa kanthi nggunakake atribut nipa (nipa specifier) kanthi selektif kanthi fungsi
Makro jangkoan kode Compiler saiki nemtokake makro __CODECOV yen opsi mcodecov sing bener wis ditemtokake.
Pilihan leladen memori Pembalap xc8-cc saiki bakal nampa opsi -mreserve=space@start: pungkasan nalika mbangun kanggo target AVR. Opsi iki nyedhiyakake sawetara memori sing ditemtokake ing ruang memori data utawa program, nyegah linker ora ngemot kode utawa obyek ing wilayah iki.
IO sing luwih pinter Sawetara dandan wis digawe kanggo fungsi Smart IO, kalebu njiwet umum kanggo kode printf inti, nambani %n specifier konversi minangka varian sawijining, ngubungake ing vararg pop rutin ing dikarepake, nggunakake jinis data luwih cendhek yen bisa kanggo nangani bantahan fungsi IO. , lan faktoring kode umum ing jembar lapangan lan penanganan tliti. Iki bisa nyebabake penghematan kode lan data sing signifikan, uga nambah kacepetan eksekusi IO.
Versi 2.39 (Rilis Keamanan Fungsional)
Lisensi Server Jaringan Rilis iki saka MPLAB XC8 Functional Safety Compiler ndhukung Lisensi Server Jaringan.
Versi 2.36
ora ana.
Versi 2.35
Dhukungan piranti anyar Dhukungan kasedhiya kanggo bagean AVR ing ngisor iki: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, lan AVR64DD32.
Ngalih konteks sing luwih apik Opsi -mcall-isr-prologues anyar ngganti cara fungsi interupsi nyimpen registrasi nalika entri lan kepiye registrasi kasebut dibalekake nalika rutin interupsi mandheg. Kerjane kanthi cara sing padha karo pilihan -mcall-prologues, nanging mung mengaruhi fungsi interupsi (ISR).
Ngalih konteks sing luwih apik Opsi -mgas-isr-prologues anyar ngontrol kode gatal konteks sing digawe kanggo rutinitas layanan gangguan cilik. Yen diaktifake, fitur iki bakal duwe assembler mindai ISR kanggo panggunaan registrasi lan mung nyimpen registrasi sing digunakake yen dibutuhake.
Pemetaan lampu kilat sing bisa dikonfigurasi Sawetara piranti ing kulawarga AVR DA lan AVR DB duwe SFR (eg FLMAP) sing nemtokake bagean 32k saka memori program sing bakal dipetakan menyang memori data. Opsi anyar - mconst-data-in-config-mapped-proem bisa digunakake kanggo nduwe linker nyeleh kabeh data cons qualified ing siji bagean 32k lan kanthi otomatis initialize ndhaftar SFR cocog kanggo mesthekake yen data iki dipetakan menyang ruang memori data , ing ngendi bakal diakses kanthi luwih efektif.
Microchip Unified Standard Library Kabeh kompiler MPLAB XC bakal nuduhake Perpustakaan Standar Microchip Unified, sing saiki kasedhiya karo rilis MPLAB XC8 iki. Pandhuan Pangguna Compiler MPLAB® XC8 C / utawa AVR® MCU ora kalebu dokumentasi kanggo fungsi standar kasebut. Informasi iki saiki bisa ditemokake ing Microchip Unified Standard Library Reference Guide. Elinga yen sawetara fungsi sing sadurunge ditetepake dening avr-libc ora kasedhiya maneh. (Deleng Pustaka):'. fungsi…)
IO pinter Minangka bagéan saka perpustakaan terpadu anyar, fungsi IO ing kulawarga print lan scan saiki digawe adat ing saben mbangun, adhedhasar carane fungsi iki digunakake ing program. Iki bisa nyuda sumber daya sing digunakake dening program.
Opsi pitulungan Smart IO Nalika nganalisa telpon menyang fungsi IO pinter (kayata printf () utawa scanf () ), compiler ora bisa tansah nemtokake saka string format utawa nyimpulake saka argumen sing specifiers konversi dibutuhake dening telpon. Sadurunge, compiler mesthi ora nggawe asumsi lan mesthekake yen fungsi IO kanthi fungsi disambung menyang gambar program pungkasan. Opsi anyar - msmart-io-format=fmt wis ditambahake supaya kompiler bisa uga dilaporake dening pangguna babagan penentu konversi sing digunakake dening fungsi IO cerdas sing panggunaane ambigu, nyegah rutinitas IO sing dawa banget supaya ora disambung. (Deleng Opsi format smart-io kanggo rincian liyane.)
Manggonke bagean adat Sadurunge, opsi -Wl, -section-start mung nyelehake bagean kasebut ing alamat sing dijaluk nalika script linker nemtokake bagean output kanthi jeneng sing padha. Yen ora, bagean kasebut diselehake ing alamat sing dipilih dening linker lan pilihan kasebut ora digatekake. Saiki pilihan kasebut bakal diajeni kanggo kabeh bagean khusus, sanajan skrip linker ora nemtokake bagean kasebut. Elinga, Nanging, kanggo bagean standar, kayata . teks,. bss utawa. data, allocator paling pas isih bakal duwe kontrol lengkap liwat panggonan seko sing, lan pilihan ora duwe efek. Gunakake opsi -Wl, -Tsection=add, kaya sing diterangake ing pandhuan pangguna.
Versi 2.32
Panuntun tumpukan Kasedhiya karo lisensi kompiler PRO, fitur tuntunan tumpukan kompiler bisa digunakake kanggo ngira ambane maksimum tumpukan sing digunakake dening program. Iki mbangun lan nganalisa grafik telpon program, nemtokake panggunaan tumpukan saben fungsi, lan ngasilake laporan, saka ngendi ambane tumpukan sing digunakake dening program kasebut bisa disimpulake. Fitur iki diaktifake liwat opsi baris printah -mchp-stack-usage. Ringkesan panggunaan tumpukan dicithak sawise eksekusi. Laporan tumpukan rinci kasedhiya ing peta file, sing bisa dijaluk kanthi cara biasa.
Dhukungan dhukungan piranti anyar kasedhiya kanggo bagean AVR ing ngisor iki: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMXDB lan AVRXNUMXDBXNUMX.
Dhukungan dhukungan piranti sing ditarik ora kasedhiya maneh kanggo bagean AVR ing ngisor iki: AVR16DA28, AVR16DA32 lan, AVR16DA48.
Versi 2.31
ora ana.
Versi 2.30
Pilihan anyar kanggo nyegah initialization data Pilihan driver -mno-data-ini t anyar ngalangi initialization data lan ngresiki bagean bss. Kerjane kanthi nyuda output data do_ copy_ lan simbol d o_ clear_ bss ing perakitan files, kang siji bakal nyegah Gawan sing rutin dening linker.
Optimizations Meningkat A sawetara dandan Optimization wis digawe, kalebu mbusak instruksi bali keluwih, mbusak sawetara mlumpat sawise skip-yen-dicokot-instruksi, lan abstraksi prosedural apik lan kemampuan kanggo iterate proses iki.
Opsi tambahan saiki kasedhiya kanggo ngontrol sawetara optimasi kasebut, khusus -f jangkar bagean, sing ngidini akses obyek statis bisa ditindakake relatif marang siji simbol; -mpai derations = n, sing ngidini jumlah pengulangan abstraksi prosedural diganti saka standar 2; lan, -mpa- nelpon biaya- shortcall, kang nindakake abstraksi prosedural luwih agresif, ing pangarep-arep sing linker bisa ngendhokke telpon dawa. Opsi pungkasan iki bisa nambah ukuran kode yen asumsi dhasar ora diwujudake.
Dhukungan piranti anyar Dhukungan kasedhiya kanggo bagean AVR ing ngisor iki: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, lan AVR128DB.
Dhukungan piranti sing ditarik Dhukungan ora kasedhiya maneh kanggo bagean AVR ing ngisor iki: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, lan 664251.
Versi 2.29 (Rilis Keamanan Fungsional)
Header file kanggo compiler built-in Kanggo mesthekake yen compiler bisa cocog karo spesifikasi basa kayata MISRA, header file, kang otomatis klebu dening , wis dianyari. Header iki ngemot prototipe kanggo kabeh fungsi sing dibangun, kayata _buil tin _avrnop () lan _buil tin_ avr delay_ cycles (). Sawetara built-in bisa uga ora cocog karo MISRA; iki bisa diilangi kanthi nambahake define _Xe_ STRICT_ MISRA menyang baris printah compiler. Dibangun lan deklarasi wis dianyari kanggo nggunakake jinis jembar tetep.
Versi 2.20
Dhukungan piranti anyar Dhukungan kasedhiya kanggo bagean AVR ing ngisor iki: ATTINY1624, ATTINY1626, lan ATTINY1627.
Alokasi sing luwih apik The best fit allocator (BFA) ing compiler wis apik supaya bagean diparengake ing urutan ngidini optimasi luwih. BFA saiki ndhukung spasi alamat sing dijenengi lan luwih apik nangani initialization data.
Abstraksi prosedural sing luwih apik Optimasi abstraksi prosedural saiki ditindakake ing luwih akeh urutan kode. Kahanan sadurunge optimasi iki bisa nambah ukuran kode wis ditanggulangi kanthi nggawe kode optimasi ngerti proses pengumpulan sampah linker.
Ora ana AVR Assembler AVR Assembler ora ana maneh karo distribusi iki.
Versi 2.19 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.10
Cakupan Kode Rilis iki kalebu fitur jangkoan kode sing nggampangake analisis babagan tingkat kode sumber proyek wis dieksekusi. Gunakake pilihan -mcodecov=ram kanggo ngaktifake. Sawise eksekusi program ing hardware sampeyan, informasi jangkoan kode bakal diklumpukake ing piranti, lan iki bisa ditransfer menyang lan ditampilake dening MPLAB X IDE liwat plugin jangkoan kode. Deleng dokumentasi IDE kanggo informasi babagan plugin iki bisa dipikolehi. #pragma mcodecov bisa digunakake kanggo ngilangi fungsi sakteruse saka analisis jangkoan. Saenipun pragma kudu ditambahake ing wiwitan file kanggo ngilangi kabeh file saka analisis jangkoan. Utawa, atribut ( (mcodecov) ) bisa digunakake kanggo ngilangi fungsi tartamtu saka analisis jangkoan.
Katrangan piranti files Piranti anyar file disebut avr chipinfo. html dumunung ing direktori docs saka distribusi compiler. Iki file dhaptar kabeh piranti sing didhukung dening compiler. Klik ing jeneng piranti, lan bakal mbukak kaca sing nuduhake kabeh setelan bit konfigurasi sing diidini / pasangan nilai kanggo piranti kasebut, karo mantanamples.
abstraksi prosedural Optimasi abstraksi prosedural, sing ngganti blok kode perakitan umum kanthi panggilan menyang salinan sing diekstrak saka blok kasebut, wis ditambahake menyang kompiler. Iki dileksanakake dening aplikasi kapisah, kang kanthi otomatis invoked dening compiler nalika milih tingkat 2, 3 optimizations ors. Optimasi iki nyuda ukuran kode, nanging bisa nyuda kacepetan eksekusi lan debuggability kode.
abstraksi prosedural bisa dipatèni ing tingkat Optimization luwih nggunakake pilihan -mno-pa, utawa bisa aktif ing tingkat Optimization ngisor (tundhuk lisensi) nggunakake -mpa. Bisa dipateni kanggo obyek file nggunakake -mno-pa-on-file=filejeneng, utawa dipatèni kanggo fungsi kanthi nggunakake -mno-pa ing fungsi = fungsi.
Ing kode sumber sampeyan, abstraksi prosedural bisa dipateni kanggo fungsi kanthi nggunakake _attribute_ ( (nopa)) kanthi definisi fungsi kasebut, utawa kanthi nggunakake _nopa, sing nggedhekake atribut ( (nopa, noinline)) lan kanthi mangkono nyegah fungsi inlining ora kedadeyan. lan ana abstraksi kode inline.
Kunci dhukungan bit ing pragma Konfigurasi #pragma saiki bisa digunakake kanggo nemtokake bit kunci AVR uga bit konfigurasi liyane. Priksa info chip avr. html file (kasebut ing ndhuwur) kanggo pasangan setelan / nilai digunakake karo pragma iki.
Dhukungan piranti anyar Dhukungan kasedhiya kanggo bagean ing ngisor iki: AVR28DA128, AVR64DA128, AVR32DA128, lan AVR48DA128.
Versi 2.05
Bit liyane kanggo dhuwit sampeyan Versi macOS saka kompiler lan manajer lisensi iki saiki dadi aplikasi 64-bit. Iki bakal mesthekake yen compiler bakal nginstal lan mbukak tanpa bebaya ing versi macOS anyar.
Objek Const ing memori program Compiler saiki bisa nyelehake obyek const-qualified ing memori Flash program, tinimbang duwe iki dumunung ing RAM. Compiler wis diowahi supaya data global const-qualified disimpen ing memori flash program lan data iki bisa langsung lan ora langsung diakses nggunakake instruksi program-memori cocok. Fitur anyar iki diaktifake kanthi gawan nanging bisa dipateni nggunakake pilihan -mno-const-data-in-progmem. Kanggo arsitektur avrxmega3 lan avrtiny, fitur iki ora dibutuhake lan tansah dipatèni, wiwit memori program wis dipetakan menyang papan alamat data kanggo piranti iki.
Standar gratis Versi kompiler sing ora dilisensi (Gratis) saiki ngidini optimasi nganti level 2. Iki bakal ngidini output sing padha, sanajan ora identik, karo sing bisa ditindakake sadurunge nggunakake lisensi Standar.
Sugeng rawuh AVRASM2 Assembler AVRASM2 kanggo piranti 8-bit saiki kalebu ing installer kompiler XC8. assembler iki ora digunakake dening XC8 compiler, nanging kasedhiya kanggo proyèk adhedhasar sumber Déwan tulisan tangan.
Dhukungan piranti anyar Dhukungan kasedhiya kanggo bagean ing ngisor iki: ATMEGA1608, ATMEGA1609, ATMEGA808, lan ATMEGA809.
Versi 2.00
Driver tingkat paling dhuwur A driver anyar, disebut xc8-cc, saiki lenggah ndhuwur driver avr-gcc sadurungé lan driver xc8, lan bisa nelpon compiler cocok adhedhasar pilihan saka piranti target. Pembalap iki nampa opsi gaya GCC, sing diterjemahake utawa diterusake menyang kompiler sing dieksekusi. Pembalap iki ngidini opsi sing padha karo semantik sing padha kanggo digunakake karo target AVR utawa PIC lan kanthi mangkono minangka cara sing disaranake kanggo njaluk kompiler. Yen dibutuhake, driver avr-gcc lawas bisa langsung ditelpon nggunakake opsi gaya lawas sing ditampa ing versi kompiler sadurungé.
Antarmuka C Umum Kompiler iki saiki bisa cocog karo Antarmuka C Umum MPLAB, ngidini kode sumber luwih gampang ditransfer ing kabeh kompiler MPLAB XC. Opsi -mext=cci njaluk fitur iki, mbisakake sintaksis alternatif kanggo akeh ekstensi basa.
Pembalap perpustakaan anyar Pembalap pustakawan anyar dipanggonke ing ndhuwur pustakawan PIC sadurunge lan pustakawan AVR avr-ar. Pembalap iki nampa opsi gaya GCC-archiver, sing diterjemahake utawa diterusake menyang pustakawan sing dieksekusi. Pembalap anyar ngidini pilihan sing padha karo semantik sing padha kanggo digunakake kanggo nggawe utawa ngapusi perpustakaan PIC utawa AVR. file lan kanthi mangkono cara sing disaranake kanggo ngundang pustakawan. Yen dibutuhake kanggo proyek warisan, pustakawan sadurunge bisa langsung ditelpon nggunakake opsi gaya lawas sing ditampa ing versi kompiler sadurungé.
Masalah Migrasi
Ing ngisor iki minangka fitur sing saiki ditangani kanthi beda dening compiler. Owah-owahan iki mbutuhake modifikasi kode sumber yen ngirim kode menyang versi kompiler iki. Nomer versi ing subheadings nuduhake versi compiler pisanan kanggo ndhukung owah-owahan ing ngisor iki.
Versi 2.40
ora ana.
Versi 2.39 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.36
ora ana.
Versi 2.35
Penanganan string-to base (XCS-2420) Kanggo mesthekake konsistensi karo compiler XC liyane, XC8 string-kanggo fungsi, kaya strtol () etc., ora maneh nyoba kanggo ngowahi senar input yen basis kasebut luwih gedhe tinimbang 36 lan tinimbang nyetel errno kanggo EINVAL. Standar C ora nemtokake prilaku fungsi nalika nilai dhasar iki ngluwihi.
Optimasi kacepetan sing ora cocog Optimasi abstraksi prosedural diaktifake nalika milih optimasi level 3 (-03). Optimasi iki nyuda ukuran kode kanthi biaya kacepetan kode, mula ora kudu ditindakake. Proyek sing nggunakake tingkat optimasi iki bisa uga ndeleng beda ukuran kode lan kacepetan eksekusi nalika dibangun nganggo rilis iki.
Fungsi perpustakaan Kode kanggo akeh fungsi perpustakaan C standar saiki teka saka Perpustakaan Standar Bersatu Microchip, sing bisa uga nuduhake prilaku sing beda ing sawetara kahanan dibandhingake karo sing diwenehake dening perpustakaan avr-libc mantan. Kanggo example, iku ora maneh perlu kanggo link ing perpustakaan lprintf_flt (-print _flt pilihan) kanggo nguripake support IO format kanggo specifiers float-format. Fitur IO pinter saka Microchip Unified Standard Library ndadekake pilihan iki keluwih. Kajaba iku, nggunakake _p suffixed rutin kanggo senar lan fungsi memori (contone strcpy_P () etc .. ) sing operate ing const strings ing lampu kilat ora perlu maneh. Rutinitas C standar (contone strcpy ()) bakal bisa digunakake kanthi bener karo data kasebut nalika fitur const-data-in-program-memori diaktifake.
Versi 2.32
ora ana.
Versi 2.31
ora ana.
Versi 2.30
ora ana.
Versi 2.29 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.20
Ngganti tata letak DFP Compiler saiki nganggep tata letak sing beda sing digunakake dening DFPs (Device Family Packs). Iki tegese DFP lawas bisa uga ora bisa digunakake karo rilis iki, lan kompiler lawas ora bakal bisa nggunakake DFP paling anyar.
Versi 2.19 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.10
ora ana
Versi 2.05
Const obyek ing memori program Elinga yen kanthi standar, obyek const-qualfiied bakal diselehake lan diakses ing memori program (kaya diterangake kene). Iki bakal mengaruhi ukuran lan kacepetan eksekusi proyek sampeyan, nanging kudu nyuda panggunaan RAM. Fitur iki bisa dipateni, yen dibutuhake, nggunakake pilihan -mnoconst- da ta-in-progmem.
Versi 2.00
Sekring konfigurasi Sekring konfigurasi piranti saiki bisa diprogram nggunakake pragma konfigurasi sing diterusake karo pasangan nilai-set kanggo nemtokake status sekring, contone.
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Objek lan fungsi mutlak Obyek lan fungsi saiki bisa diselehake ing alamat tartamtu ing memori nggunakake CCI _at (alamat) specifier, kanggo ex.ample: #kalebu int foobar ing(Ox800100); char at(Ox250) get ID(int offset) {… } Argumentasi kanggo specifier iki kudu konstan sing makili alamat ing ngendi byte utawa instruksi pisanan bakal diselehake. Alamat RAM dituduhake kanthi nggunakake offset 0x800000. Aktifake CCI kanggo nggunakake fitur iki.
Sintaks fungsi interupsi anyar Compiler saiki nampa penentu CCI interrupt (num) kanggo nunjukake yen fungsi C minangka panangan interupsi. Specifier njupuk nomer interupsi, contoneample: #kalebu void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
Masalah tetep
Ing ngisor iki minangka koreksi sing wis digawe kanggo compiler. Iki bisa uga ndandani kewan omo ing kode sing digawe utawa ngowahi operasi compiler menyang sing dimaksudake utawa ditemtokake dening pandhuan pangguna. Nomer versi ing subheadings nuduhake versi compiler pisanan sing ngemot mbenakake kanggo masalah sabanjuré. Label ing kurung ing judhul yaiku identifikasi masalah kasebut ing basis data pelacakan. Iki bisa uga migunani yen sampeyan kudu ngubungi dhukungan.
Elinga yen sawetara masalah khusus piranti didandani ing Device Family Pack (DFP) sing digandhengake karo piranti kasebut. Deleng Manajer Paket MPLAB kanggo informasi babagan owah-owahan sing digawe kanggo DFP lan download paket paling anyar.
Versi 2.40
Terlalu santai (XCS-2876) Nalika nggunakake opsi -mrelax, compiler ora nyedhiakke sawetara bagean bebarengan, asil ing ukuran kode kurang optimal. Iki bisa uga kedadeyan kanthi kode sing nggunakake perpustakaan MUSL anyar utawa kanthi simbol sing lemah.
Fitur pemetaan ora dipateni kaya sing kasebut ing bebaya (XCS-2875) Fitur cost-data-in-config mappedprogmem gumantung ing fitur biaya-data-in-proem sing diaktifake. Yen fitur cost-data-ipconfig- mapped-proem kanthi jelas diaktifake nggunakake opsi kasebut lan fitur cost-data-inprogmem dipateni, langkah link gagal, sanajan ana pesen bebaya sing nyatakake yen cons data- in-config-mapped- fitur proem wis otomatis dipatèni, kang ora tanggung bener. Fitur const-data-in-config-mapped-proem saiki dipateni kanthi lengkap ing kahanan iki.
Owah-owahan DFP kanggo ngakses NVMCTRL kanthi bener (XCS-2848) Kode wiwitan runtime sing digunakake dening piranti AVR64EA ora nyathet yen ndhaftar NVMCTRL ana ing Configuration Change Protection (CCP) lan ora bisa nyetel IO SFR menyang kaca sing digunakake dening const-data-in configmapped-proem compiler. fitur. Owah-owahan sing digawe ing versi AVR-Ex_DFP 2.2.55 bakal ngidini kode wiwitan runtime kanggo nulis kanthi bener menyang register iki.
Owah-owahan DFP kanggo ngindhari pemetaan lampu kilat (XCS-2847) A work-around kanggo masalah karo fitur piranti pemetaan lampu kilat kacarita ing AVR128DA28/32/48/64 Silicon Errata (DS80000882) wis dipun ginakaken. Fitur compiler const-data-in-config-mapped-proem ora bakal ditrapake kanthi gawan kanggo piranti sing kena pengaruh, lan owah-owahan iki bakal katon ing versi AVR-Ex_DFP 2.2.160.
Mbangun kesalahan karo sinhf utawa coshf (XCS-2834) Nyoba kanggo nggunakake fungsi perpustakaan sinhf () utawa coshf () nyebabake kesalahan link, njlèntrèhaké referensi undefined. Fungsi sing ilang sing dirujuk saiki wis kalebu ing distribusi kompiler.
Mbangun kesalahan nganggo nopa (XCS-2833) Nggunakake atribut nopa karo fungsi sing wis jeneng assembler kasebut nggunakake minangka () micu pesen kesalahan saka assembler. Kombinasi iki ora bisa ditindakake.
Gagal fungsi variadik kanthi argumen pointer (XCS-2755, XCS-2731) Fungsi karo nomer variabel argumen ngarepake 24-bit (jinis _memo) penunjuk bakal dilewati ing dhaptar argumen variabel nalika fitur biaya-data-in-proem diaktifake. Argumen-argumen sing dadi penunjuk memori data diterusake minangka obyek 16-bit, nyebabake kegagalan kode nalika pungkasane diwaca. Nalika fitur cons data-in-proem diaktifake, kabeh argumen pointer 16-bit saiki diowahi dadi pointer 24-bit. fungsi perpustakaan strtoxxx gagal (XCS-2620) Nalika fitur const-data-in-proem diaktifake, parameter ketik ing fungsi perpustakaan strtoxxx ora dianyari bener kanggo bantahan senar sumber ora ing memori program.
Tandha kanggo cast sing ora valid (XCS-2612) Compiler saiki bakal nerbitake kesalahan yen fitur biaya-in-proem diaktifake lan alamat string literal dilebokake sacara eksplisit menyang ruang alamat data (ngeculake kualifikasi const), kanggo example, (uint8 t *) "Hello World!". Bebaya masalah yen alamat bisa uga ora sah nalika pointer data const sacara eksplisit dikirim menyang papan alamat data.
Penempatan obyek const sing ora diinisialisasi (XCS-2408) Objek const lan const v olatile uninitialized ora diselehake ing memori program ing piranti sing map kabeh utawa bagéan saka memori program menyang papan alamat data. Kanggo piranti kasebut, obyek kasebut saiki diselehake ing memori program, nggawe operasi kasebut konsisten karo piranti liyane.
Versi 2.39 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.36
Kesalahan nalika tundha (XCS-2774) Owah-owahan cilik ing standar Optimizations mode Free nyegah lempitan pancet ekspresi operand kanggo wektu tundha dibangun ing fungsi, asil ing wong dianggep minangka noncontacts lan micu kesalahan: _buil tin avr delay_ cycles nyana ac ompile wektu integer konstan.
Versi 2.35
Alokasi sesambungan nggunakake _at (XCS-2653) Alokasi sing cedhak karo macem-macem obyek ing bagean kanthi jeneng sing padha lan nggunakake ing () ora bisa digunakake kanthi bener. Kanggo example: constchararrl [] ing tri butte ((sect on(“.miss”))) at (Ox50 0 ) = {Oxo, Ox CD}; biaya char arr2 [ ] ing tri butte ((bagean (". My s eke"))) = {Sapi, Ox FE}; kudu diselehake arr2 sanalika sawise aril.
Nemtokake alamat wiwitan bagean (XCS-2650) Opsi -Wal, -section-start kanthi meneng ora nempatake bagean ing alamat wiwitan sing dipilih. Jeksa Agung bisa ngetokake iki wis didandani kanggo sembarang bagean khusus-jeneng; nanging, ora bakal bisa digunakake kanggo bagean standar, kayata. teks utawa . bss, sing kudu diselehake nggunakake pilihan -Wl, -T.
Linker nabrak nalika santai (XCS-2647) Nalika optimasi -relax diaktifake lan ana kode utawa bagean data sing ora cocog karo memori sing kasedhiya, linker nabrak. Saiki, ing kahanan kaya mengkono, pesen kesalahan ditanggepi tinimbang.
Akses EEPROM ala (XCS-2629) Rutinitas pamblokiran _read_ leproma ora bisa digunakake kanthi bener ing piranti Mega nalika opsi -monist-data-in-proem diaktifake (sing minangka standar), nyebabake memori EEPROM ora diwaca kanthi bener.
Alokasi memori ora bener (XCS-2593, XCS-2651) Nalika opsi linker -Teks utawa -Tata (kanggo example liwat nggunakake pilihan driver -Wl) wis ditemtokake, teks sing cocog / asal wilayah data dianyari; Nanging, alamat pungkasan ora disetel, sing bisa nyebabake wilayah kasebut ngluwihi jangkoan memori piranti target.
Kode interupsi ATtiny ora valid (XCS-2465) Nalika mbangun kanggo piranti Tatin lan optimizations dipatèni (-00), fungsi interupsi bisa micu operan metu saka sawetara pesen assembler.
Pilihan sing ora dilewati (XCS-2452) Nalika nggunakake opsi -Wl kanthi macem-macem opsi linker sing dipisahake koma, ora kabeh opsi linker dikirim menyang linker.
Kesalahan ora langsung maca memori program (XCS-2450) Ing sawetara kasus, kompiler ngasilake kesalahan internal (insn ora bisa dingerteni) nalika maca nilai rong bait saka pointer menyang memori program.
Versi 2.32
Akses kapindho perpustakaan gagal (XCS-2381) Njaluk versi Windows saka xc8-ar. arsip perpustakaan exe kaping pindho kanggo ngakses arsip perpustakaan sing ana bisa uga gagal amarga pesen kesalahan ora bisa diganti.
Versi 2.31
Gagal kompiler sing ora dijelasake (XCS-2367) Nalika mlaku ing platform Windows sing nduweni direktori sauntara sistem disetel menyang path sing kalebu titik'.' karakter, compiler bisa uga gagal kanggo nglakokaké.
Versi 2.30
Label global salah panggonan sawise outline (XCS-2299) Kode perakitan sing ditulis tangan sing nempatake label global ing urutan perakitan sing difaktorake dening abstraksi prosedural bisa uga ora diowahi kanthi bener.
Kacilakan santai (XCS-2287) Nggunakake pilihan -merlad bisa uga wis nyebabake linker kacilakan nalika buntut mlumpat optimasi istirahat nyoba mbusak instruction ret sing ora ana ing mburi bagean.
Kacilakan nalika ngoptimalake label minangka nilai (XCS-2282) Kode nggunakake ekstensi basa GNU C "Label minangka nilai" bisa nyebabake optimasi abstraksi prosedural kacilakan, kanthi sawetara VMA sing digarisake kesalahan fixup.
Ora dadi const (XCS-2271) Prototipe kanggo wiwitan () lan fungsi liyane saka ora maneh nemtokake kualifikasi biaya non-standar ing pitunjuk senar bali nalika fitur -monist-data inprogmem dipatèni. Elinga yen karo piranti avrxmega3 lan avertin, fitur iki diaktifake kanthi permanen.
Ikisialisasi ilang (XCS-2269) Nalika luwih saka siji variabel ing unit terjemahan dilebokake ing bagean (nggunakake bagean utawa atribut ((bagean))), lan variabel pisanan kasebut nol diinisialisasi utawa ora duwe initializer, initializer kanggo variabel liyane ing unit terjemahan sing padha. sing padha diselehake ing bagean padha ilang.
Versi 2.29 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.20
Kesalahan karo printah dawa (XCS-1983) Nalika nggunakake target AVR, compiler bisa mandheg karo a file ora ketemu kesalahan, yen baris printah gedhe banget lan ngemot karakter khusus kayata kuotasi, backslashes, etc.
Bagean rodata sing ora ditemtokake (XCS-1920) Linker AVR gagal nemtokake memori kanggo bagean rodata khusus nalika mbangun arsitektur avrxmega3 lan avrtiny, sing bisa nyebabake kesalahan tumpang tindih memori.
Versi 2.19 (Rilis Keamanan Fungsional)
ora ana.
Versi 2.10
Gagal relokasi (XCS-1891) Alokasi paling pas yaiku ninggalake 'bolongan' memori ing antarane bagean sawise istirahat linker. Kajaba saka fragmentasi memori, iki nambah kemungkinan ana kegagalan relokasi linker sing ana hubungane karo lompatan relatif pc utawa telpon dadi metu saka jangkauan.
Pandhuan ora diowahi kanthi relaksasi (XCS-1889) Relaksasi linker ora kedadeyan kanggo mlumpat utawa instruksi telpon sing target bisa digayuh yen santai.
ilang fungsi (XCSE-388) Saperangan definisi saka , kayata clock_ div_t lan clock_prescale_set (), ora ditetepake kanggo piranti, kalebu ATmega324PB, ATmega328PB, ATtiny441, lan ATtiny841.
Macro sing ilang Preprocessor macros_ xcs _MODE_, _xcs VERSION, _xc, lan xcs ora ditetepake kanthi otomatis dening compiler. Iki saiki kasedhiya.
Versi 2.05
Kesalahan kompiler internal (XCS-1822) Nalika mbangun ing Windows, kesalahan kompiler internal bisa uga diasilake nalika ngoptimalake kode.
RAM overflow ora dideteksi (XCS-1800, XCS-1796) Program sing ngluwihi RAM kasedhiya ora dideteksi dening compiler ing sawetara kahanan, asil ing gagal kode runtime.
Memori lampu kilat diilangi (XCS-1792) Kanggo piranti avrxmega3 lan avrtiny, bagean saka memori lampu kilat bisa uga ora diprogram dening MPLAB X IDE.
Gagal ngeksekusi utama (XCS-1788) Ing sawetara kahanan nalika program ora ana variabel global sing ditetepake, kode wiwitan runtime ora metu lan fungsi utama () ora tau tekan.
Informasi memori sing salah (XCS-1787) Kanggo piranti avrxmega3 lan avrtiny, program ukuran avr nglaporake manawa data mung diwaca nggunakake RAM tinimbang memori program.
Maca memori program salah (XCS-1783) Proyek sing diklumpukake kanggo piranti kanthi memori program sing dipetakan menyang ruang alamat data lan sing nemtokake obyek nggunakake makro/atribut PROGMEM bisa uga wis maca obyek kasebut saka alamat sing salah.
Kesalahan internal kanthi atribut (XCS-1773) Ana kesalahan internal yen sampeyan nemtokake obyek pointer karo
_at () utawa atribut () token ing antarane jeneng pointer lan jinis dereferenced, contoneample, char *
_ing ( 0x80015 0) cp; Bebaya saiki ditanggepi yen kode kasebut ditemoni.
Gagal nglakokake utama (XCS-1780, XCS-1767, XCS-1754) Nggunakake variabel EEPROM utawa nemtokake sekring nggunakake pragma konfigurasi bisa uga nyebabake inisialisasi data sing salah lan/utawa ngunci eksekusi program ing kode wiwitan runtime, sadurunge tekan main ().
Kesalahan sekring karo piranti cilik (XCS-1778, XCS-1742) Piranti attiny4/5/9/10/20/40 nduweni dawa sekring sing salah sing ditemtokake ing header. files sing mimpin kanggo kesalahan linker nalika nyoba kanggo mbangun kode sing ditetepake sekring.
Segmentasi fault (XCS-1777) Fault segmentasi intermiten wis didandani.
Kacilakan Assembler (XCS-1761) Assembler avr-as bisa uga nabrak nalika kompiler diluncurake ing Ubuntu 18.
Obyek ora diresiki (XCS-1752) Obyek durasi panyimpenan statis sing ora diinisialisasi bisa uga durung dibusak dening kode wiwitan runtime.
Spesifikasi piranti sing bentrok diabaikan (XCS-1749) Compiler ora ngasilake kesalahan nalika macem-macem opsi spesifikasi piranti digunakake lan nuduhake piranti beda.
Korupsi memori kanthi tumpukan (XCS-1748) Simbol wiwitan heap_ salah disetel, nyebabake kemungkinan variabel biasa dirusak dening heap.
Kesalahan relokasi linker (XCS-1739) Kesalahan relokasi linker bisa uga ana nalika kode ngemot rjmp utawa rcall kanthi target 4k bita.
Versi 2.00
ora ana.
Masalah sing Dikenal
Ing ngisor iki watesan ing operasi compiler. Iki bisa uga watesan kode umum, utawa
panyimpangan saka informasi sing ana ing manual pangguna. Label ing kurung ing judhul yaiku identifikasi masalah kasebut ing basis data pelacakan. Iki bisa uga migunani yen sampeyan kudu ngubungi dhukungan. Item sing ora duwe label minangka watesan sing nggambarake mode operandi lan sing bisa ditrapake kanthi permanen.
Integrasi MPLAB X IDE
Integrasi IDE MPLAB Yen Compiler arep digunakake saka MPLAB IDE, sampeyan kudu nginstal MPLAB IDE sadurunge nginstal Compiler.
Generasi Kode
Gagal alokasi memori PA (XCS-2881) Nalika nggunakake pangoptimal abstraksi prosedural, linker bisa nglaporake kesalahan alokasi memori nalika ukuran kode cedhak karo jumlah memori program sing kasedhiya ing piranti, sanajan program kasebut kudu pas karo ruang sing kasedhiya.
Ora pinter Smart-IO (XCS-2872) Fitur smart-io compiler bakal ngasilake kode sing bener nanging sub optimal kanggo fungsi sprint yen fitur coast-data-in-proem wis dipateni utawa yen piranti wis kabeh lampu kilat dipetakan menyang memori data.
Malah kurang pinter Smart-IO (XCS-2869) Fitur smart-io compiler bakal ngasilake kode sing bener nanging suboptimal nalika opsi timah -floe lan -fno-buil digunakake.
Penempatan data mung maca suboptimal (XCS-2849) Linker saiki ora ngerti bagean memori APPCODE lan APPDATA, utawa divisi [No-]Read-While-Write ing peta memori. Akibaté, ana kemungkinan cilik linker bisa nyedhiakke data mung diwaca ing area memori sing ora cocog. Kemungkinan data misplaced mundhak yen fitur pesisir-data-in-pragma diaktifake, utamané yen fitur pesisir-data-in-config-map-proem uga aktif. Fitur kasebut bisa dipateni yen dibutuhake.
obyek file urutan pangolahan (XCS-2863) Urutan kang obyek files bakal diproses dening linker bisa beda-beda adhedhasar nggunakake optimizations abstraksi prosedural (-mpa pilihan). Iki mung bakal mengaruhi kode sing nemtokake fungsi sing lemah ing pirang-pirang modul.
Kesalahan linker kanthi absolut (XCS-2777) Nalika obyek wis digawe mutlak ing alamat ing wiwitan RAM lan obyek uninitialized uga wis ditetepake, kesalahan linker bisa micu.
ID wake-up singkat (XCS-2775) Kanggo piranti ATA5700/2, ndhaftar PHID0/1 mung ditetepake minangka ambane 16 bit, tinimbang ambane 32 bit.
Linker kacilakan nalika nelpon simbol (XCS-2758) Linker bisa nabrak yen opsi driver -merlad digunakake nalika kode sumber nelpon simbol sing wis ditetepake nggunakake -Wl, -defsym pilihan linker.
Inisialisasi salah (XCS-2679) Ana bedo ing ngendi nilai awal kanggo sawetara obyek ukuran bita global / statis diselehake ing memori data lan ing ngendi variabel bakal diakses nalika runtime.
diwiwiti kanthi salah nyetel kosong (XCS-2652) Ing kasus yen string subyek kanggo konversi kanthi nyatakake () ngemot angka floating-point ing format eksponensial lan ana karakter sing ora dikarepke sawise karakter e, banjur alamat kosong, yen kasedhiya, bakal nuding karakter sawise. e lan dudu e dhewe. Kanggo example: nyatakake ("hooey", kosong); bakal nyebabake titik kosong menyang karakter x.
Panggilan fungsi ora langsung sing ala (XCS-2628) Ing sawetara kasus, telpon fungsi sing digawe liwat pointer fungsi sing disimpen minangka bagéan saka struktur bisa gagal.
strtof ngasilake nol kanggo heksadesimal floats (XCS-2626) Fungsi perpustakaan strtof () et al lan scanf () et al, bakal tansah ngowahi nomer floating-point heksadesimal sing ora nemtokake eksponen dadi.
nul. Kanggo example: stator ("Owl", & kosong); bakal ngasilake nilai 0, ora 1.
Olahpesen penasehat tumpukan ora akurat (XCS-2542, XCS-2541) Ing sawetara kedadean, bebaya stack advisor babagan rekursi utawa tumpukan indeterminate digunakake (bisa liwat nggunakake alloca ()) ora cemlorot.
Gagal nganggo kode interupsi duplikat (XCS-2421) Yen luwih saka siji fungsi interupsi nduweni awak sing padha, kompiler bisa uga duwe output kanggo siji fungsi interrupt nelpon liyane. Iki bakal nyebabake kabeh ndhaptar telpon-clobbered disimpen kanthi ora perlu, lan interrupts bakal diaktifake sanajan sadurunge epilog saka panangan interupsi saiki wis mlaku, sing bisa nyebabake kegagalan kode.
Objek Const ora ana ing memori program (XCS-2408) Kanggo avrxmega3 lan avertins proyèk obyek const unidealized diselehake menyang memori data, sanajan bebaya tabet sing padha wis diselehake ing memori program. Iki ora bakal mengaruhi piranti sing ora duwe memori program sing dipetakan menyang ruang memori data, lan uga ora bakal mengaruhi obyek sing diinisialisasi.
Output ala karo path DFP ora valid (XCS-2376) Yen kompiler dijaluk nganggo jalur DFP sing ora bener lan 'spec' file ana kanggo piranti sing dipilih, compiler ora nglaporake paket kulawarga piranti sing ilang lan milih 'spesifikasi' file, sing banjur bisa nyebabake output sing ora bener. 'spesifikasi' files bisa uga ora anyar karo DFPs sing disebarake lan mung digunakake kanggo testing compiler internal.
Memori tumpang tindih ora dideteksi (XCS-1966) Compiler ora ndeteksi tumpang tindih memori obyek digawe Absolute ing alamat (liwat ing ()) lan obyek liyane nggunakake bagean () specifier lan sing disambung menyang alamat sing padha.
Gagal karo fungsi perpustakaan lan _meme (XCS-1763) Disebut fungsi limbic float kanthi argumen ing ruang alamat _memo bisa uga gagal. Elinga yen rutin perpustakaan diarani saka sawetara operator C, supaya, kanggo Example, kode ing ngisor iki kena pengaruh: bali regFloatVar> memxFloatVar;
Implementasi limbik winates (AVRTC-731) Kanggo produk ATTiny4/5/9/10/20/40, implementasi perpustakaan C / Math standar ing limbic winates banget utawa ora ana.
Batasan memori program (AVRTC-732) Gambar memori program ngluwihi 128 kb didhukung dening toolchain; Nanging, ana kedadean dikenal linker aborts tanpa istirahat lan tanpa pesen kesalahan mbiyantu tinimbang ngasilaken stubs fungsi dibutuhake nalika opsi -relax digunakake.
Watesan papan jeneng (AVRTC-733) Spasi alamat sing dijenengi didhukung dening toolchain, miturut watesan sing kasebut ing bagean pandhuan pangguna Kualifikasi Tipe Khusus.
Zona wektu Ing fungsi perpustakaan nganggep GMT lan ora ndhukung zona wektu lokal, mangkono wektu lokal () bakal bali wektu sing padha gummite (), kanggo example.
Dhukungan pelanggan
file///Applications/microehip/xc8/v 2 .40/docs/Waca me_X C 8_ kanggo A VR. htm
Dokumen / Sumber Daya
![]() |
MICROCHIP MPLAB XC8 C Compiler Software [pdf] Manual Pamilik MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, Software |