MICROCHIP MPLAB XC8 C Kompilprogramo
ĈI ĈI DOKUMENTO enhavas GRAVAJ INFORMOJ RIGLATANTE AL LA MPLAB XC8 C-KOMPILILO KIAM ĈELAS MICROCHIP AVR-APARATOJ.
BONVOLU LEGI ĜIN ANTAŬ LA RULIGO DE ĈI TIU PROVARO. VIDU LA KOMPILOJ DE MPLAB XC8 C ELDONAJ NOTOJ POR PIC-DOKUMENTO SE VI UZAS LA KOMPIILON POR 8-BITAJ PIC APARATOJ.
Finiteview
Enkonduko
Ĉi tiu eldono de la kompililo Microchip MPLAB® XC8 C enhavas plurajn novajn funkciojn, korektojn de eraroj kaj novan aparaton.
Konstrua Dato
La oficiala konstrudato de ĉi tiu kompilila versio estas la 3-a de julio 2022.
Antaŭa Versio
La antaŭa MPLAB XC8 C-kompililversio estis 2.39, funkcia sekureca kompililo, konstruita la 27an de januaro 2022. La antaŭa norma kompililo estis versio 2.36, konstruita la 27an de januaro 2022.
Manlibro pri Funkcia Sekureco
Funkcia Sekureca Manlibro por la MPLAB XC-kompililoj estas havebla en la dokumenta pako kiam vi aĉetas funkcian sekurecan permesilon.
Komponantaj Licencoj kaj Versioj
La iloj MPLAB® XC8 C Kompililo por AVR MCUs estas skribitaj kaj distribuitaj sub la Ĝenerala Publika Permesilo (GPL) de GNU, kio signifas, ke ĝia fontkodo estas libere distribuita kaj havebla al la publiko. La fontkodo por iloj sub GNU GPL povas esti elŝutita aparte de Microchip webretejo. Vi povas legi la GNU GPL en la file nomita lokalizis la subdosierujon de via instala dosierujo. Ĝenerala diskuto pri principoj sub la GPL troveblas ĉi tie. Subtena kodo provizita por la kaplinio files, ligilaj skriptoj kaj rultempaj bibliotekoj estas proprieta kodo kaj ne kovritaj sub la GPL.
Ĉi tiu kompililo estas efektivigo de GCC-versio 5.4.0, binutils-versio 2.26, kaj uzas avr-libc-version 2.0.0.
Sistemaj Postuloj
La MPLAB XC8 C-kompililo kaj la licenca programaro kiun ĝi uzas estas disponeblaj por diversaj operaciumoj, inkluzive de 64-bitaj versioj de la jenaj: Profesiaj eldonoj de Microsoft Windows 10; Ubuntu 18.04; kaj macOS 10.15.5. Binaroj por Vindozo estis kodsubskribitaj. Binaroj por mac OS estis kodsubskribitaj kaj notariitaj.
Se vi prizorgas retan licencservilon, nur komputiloj kun operaciumoj subtenataj de la kompililoj povas esti uzataj por gastigi la licencservilon. Ekde xclm-versio 2.0, la retlicenca servilo povas esti instalita sur platformo Microsoft Windows Server, sed la permesila servilo ne bezonas funkcii per servila versio de la operaciumo.
Aparatoj Subtenataj
Ĉi tiu kompililo subtenas ĉiujn 8-bitajn AVR MCU-aparatojn konatajn en la momento de liberigo. Vidu (en la doc-dosierujo de la kompililo) por listo de ĉiuj subtenataj aparatoj. Ĉi tiuj files ankaŭ listigu agordajn bitajn agordojn por ĉiu aparato.
Eldonoj kaj Licencaj Ĝisdatigoj
La kompililo MPLAB XC8 povas esti aktivigita kiel licencita (PRO) aŭ senlicenca (Senpaga). Vi devas aĉeti aktivigan ŝlosilon por permesi vian kompililon. Permesilo permesas pli altan nivelon de optimumigo kompare kun la Senpaga produkto. Senlicenca kompililo povas funkcii senlime sen permesilo.
Kompililo de MPLAB XC8 Functional Safety devas esti aktivigita kun funkcia sekureca licenco aĉetita de Microchip. La kompililo ne funkcios sen ĉi tiu permesilo. Unufoje aktivigita, vi povas elekti ajnan optimumigan nivelon kaj uzi ĉiujn kompililajn funkciojn. Ĉi tiu eldono de la Funkcia Sekureca Kompililo MPLAB XC subtenas la Retan Servilan Licencon.
Vidu la dokumenton pri Instalado kaj Licencado de MPLAB XC C Kompililoj (DS50002059) por informoj pri licencspecoj kaj instalado de la kompililo kun permesilo.
Instalado kaj Aktivigo
Vidu ankaŭ la sekciojn pri Migrado-Problemoj kaj Limigoj por gravaj informoj pri la plej nova permesila administranto inkluzivita kun ĉi tiu kompililo.
Se vi uzas MPLAB IDE, nepre instalu la plej novan MPLAB X IDE version 5.0 aŭ poste antaŭ ol instali ĉi tiun ilon. Forlasu la IDE antaŭ ol instali la kompililon. Rulu la instalilon de kompililo .exe (Vindozo), .run (Linukso) aŭ app (macOS), ekz. XC8-1.00.11403-windows.exe kaj sekvu la instrukciojn sur la ekrano.
La defaŭlta instala dosierujo estas rekomendita. Se vi uzas Linukso, vi devas instali la kompililon per terminalo kaj de radika konto. Instalu uzante macOS-konton kun administranto-privilegioj.
Aktivigo nun estas efektivigita aparte al instalado. Vidu la dokumenton License Manager for MPLAB® XC C Compilers (DS52059) por pliaj informoj.
Se vi elektas funkciigi la kompililon sub la taksadlicenco, vi nun ricevos averton dum kompilo kiam vi estos ene de 14 tagoj post la fino de via taksadperiodo. La sama averto estas eligita se vi estas ene de 14 tagoj post la fino de via HPA-abono.
La XC Reta Licenca Servilo estas aparta instalilo kaj ne estas inkluzivita en la instalilo de unu-uzanta kompililo.
La XC License Manager nun subtenas vagadon de flosantaj retaj licencoj. Celita al poŝtelefonaj uzantoj, ĉi tiu funkcio permesas al ŝveba permesilo foriri de reto por mallonga tempodaŭro. Uzante ĉi tiun funkcion, vi povas malkonekti de la reto kaj ankoraŭ uzi vian MPLAB XC-kompililon. Vidu la dok-dosierujon de la instalado de XCLM por pli pri ĉi tiu funkcio. MPLAB X IDE inkluzivas fenestron Permesiloj (Iloj > Permesiloj) por vide administri vagadon.
Solvado de Instalaj Problemoj
Se vi spertas malfacilaĵojn instali la kompililon sub iu el la Vindozaj operaciumoj, provu la jenajn sugestojn.
- Rulu la instalon kiel administranto.
- Agordu la permesojn de la instala aplikaĵo al 'Plena kontrolo'. (dekstre alklaku la file, elektu Propraĵojn, Sekureclangeton, elektu uzanton, redaktu.)
- Agordu permesojn de la provizora dosierujo al "Plena Kontrolo!
Por determini la lokon de la temp-dosierujo, tajpu %temp% en la komandon Run (Vindoza logoklavo + R). Ĉi tio malfermos a file dialogo de esploristo montranta tiun dosierujon kaj permesos al vi determini la vojon de tiu dosierujo.
Kompililo Dokumentado
La gvidiloj de la uzanto de la kompililo povas esti malfermitaj de la HTML-paĝo kiu malfermiĝas en via retumilo kiam vi alklakas la bluan helpbutonon en MPLAB X IDE panelo, kiel indikite en la ekrankopio.
Se vi konstruas por 8-bitaj AVR-celoj, la Gvidilo de Uzanto de Kompililo MPLAB® XC8 C por AVR® MCU enhavas informojn pri tiuj kompililoj kaj funkcioj aplikeblaj al ĉi tiu arkitekturo.
Klienta Subteno
Microchip bonvenigas cimraportojn, sugestojn aŭ komentojn pri ĉi tiu kompilila versio. Bonvolu direkti iujn ajn cimraportojn aŭ funkciojn per la Subtena Sistemo.
Ĝisdatigoj de Dokumentado
Por interretaj kaj ĝisdataj versioj de MPLAB XC8-dokumentado, bonvolu viziti la Retan Teknikan Dokumentadon de Microchip. webretejo.
Nova aŭ ĝisdatigita AVR-dokumentado en ĉi tiu eldono:
- Avizo pri kopirajto de MUSL
- Instalado kaj Licencado de MPLAB XC C Kompililoj (revizio M)
- MPLAB XC8 User!s Guide for Embedded Engineers - AVR MCUs (revizio A)
- MPLAB XC8 C Kompililo Uzanto!s Gvidilo por AVR MCU (revizio F)
- Microchip Unified Standard Library Reference Guide (revizio B)
La Microchip Unified Standard Library Reference Guide priskribas la konduton de kaj interfaco al la funkcioj difinitaj fare de la Microchip Unified Standard Library, same kiel la celitan uzon de la bibliotekspecoj kaj makrooj. Iuj el ĉi tiuj informoj antaŭe estis enhavitaj en la Gvidilo de Uzanto de la Kompililo de MPLAB® XC8 C por AVR® MCU. Aparato-specifaj bibliotekinformoj daŭre estas enhavitaj en ĉi tiu kompilila gvidilo.
Se vi ĵus komencas kun 8-bitaj aparatoj kaj la MPLAB XC8 C Kompililo, la Gvidilo de Uzanto de MPLAB® XC8 por Enkonstruitaj Inĝenieroj - AVR® MCUs (DS50003108) havas informojn pri starigo de projektoj en la MPLAB X IDE kaj skribi kodon por via unua projekto MPLAB XC8 C. Ĉi tiu gvidilo nun estas distribuita kun la kompililo.
La Gvidilo de Uzanto de Hamate estis inkluzivita en la dosierujo docs en ĉi tiu eldono. Ĉi tiu gvidilo estas destinita por tiuj, kiuj funkcias Hamate kiel memstara aplikaĵo.
Kio estas Nova
La jenaj estas novaj AVR-celaj funkcioj, kiujn la kompililo nun subtenas. La versinumero en la subtitoloj indikas la unuan kompililon por subteni la funkciojn kiuj sekvas.
Versio 2.40
Nova aparato-subteno Subteno nun haveblas por la sekvaj AVR-partoj: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32EA64, kaj AVR48EAXNUMXEAXNUMX.
Plibonigita procedura abstraktado La procedura abstraktado (PA) optimumiga ilo estis plibonigita tiel ke kodo enhavanta funkcion alvoko instrukcio ( voko revoko )) povas esti skizita. Ĉi tio nur okazos se la stako ne estas uzata por pasi argumentojn al nek akiri revenan valoron de la funkcio. La stako estas uzata kiam oni vokas funkcion kun varia argumentlisto aŭ kiam oni vokas funkcion, kiu prenas pli da argumentoj ol estas registroj destinitaj por tiu ĉi celo. Ĉi tiu funkcio povas esti malŝaltita uzante la opcion monk-pa-outline-calls, aŭ procedura abstraktado povas esti tute malŝaltita por objekto file aŭ funkcio uzante la -monk-pa-on-file kaj -mo.-pa-on-funkcio respektive, aŭ uzante la nipa atributon ( nipa specifier) selekteme kun funkcioj
Kodkovra makroo La kompililo nun difinas la makroon __CODECOV se valida mcodecov opcio estas specifita.
Memorrezervada opcio La xc8-cc-ŝoforo nun akceptos la opcion -mreserve=space@start: end dum konstruado por AVR-celoj. Ĉi tiu opcio rezervas la specifitan memorintervalon en la aŭ la datuma aŭ programa memorspaco, malhelpante la ligilon popoli kodon aŭ objektojn en ĉi tiu areo.
Pli inteligenta IO Pluraj plibonigoj estis faritaj al la Smart IO-funkcioj, inkluzive de ĝeneralaj tuŝoj al la printf-kernkodo, traktante la %n konvertan specifilon kiel sendependan variaĵon, ligante en vararg pop rutinojn laŭpeto, uzante pli mallongajn datumtipojn kie ebla por pritraktado de IO-funkciaj argumentoj, kaj faktorigante oftan kodon en kampolarĝo kaj precizeca uzado. Ĉi tio povas rezultigi signifan kodon kaj datumajn ŝparadojn, kaj ankaŭ pliigi la ekzekutrapidecon de IO.
Versio 2.39 (Funkcia Sekureca Eldono)
Reta Servila Licenco Ĉi tiu eldono de la Funkcia Sekureca Kompililo MPLAB XC8 subtenas la Retan Servilan Licencon.
Versio 2.36
Neniu.
Versio 2.35
Nova aparato-subteno Subteno disponeblas por la sekvaj AVR-partoj: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 kaj AVR64DD32.
Plibonigita kuntekstoŝanĝo La nova opcio -mcall-isr-prologues ŝanĝas kiel interrompaj funkcioj konservas registrojn sur eniro kaj kiel tiuj registroj estas restarigitaj kiam la interromprutino finiĝas. Ĝi funkcias simile al la opcio -mcall-prologues, sed nur influas interrompajn funkciojn (ISR).
Eĉ pli plibonigita kuntekstŝanĝo La nova -mgas-isr-prologues opcio kontrolas la kuntekstojn jukan kodon generitan por malgrandaj interrompaj servaj rutinoj. Kiam ĝi estas ebligita, ĉi tiu funkcio havos la asembleron skani la ISR por registri uzadon kaj nur konservi ĉi tiujn uzitajn registrojn se necese.
Agordebla fulmmapado Iuj aparatoj en la familio AVR DA kaj AVR DB havas SFR (ekz. FLMAP) kiu precizigas kiu 32k sekcio de programmemoro estos mapita en la datummemoron. La nova opcio - mconst-data-in-config-mapped-proem povas esti uzata por ke la ligilo metu ĉiujn kons-kvalifikitajn datumojn en unu 32k-sekcion kaj aŭtomate pravigi la koncernan SFR-registron por certigi, ke ĉi tiuj datumoj estas mapitaj en la datummemorspacon, kie ĝi estos alirebla pli efike.
Microchip Unuigitaj Normaj Bibliotekoj Ĉiuj MPLAB XC-kompililoj dividos Microchip Unified Standard Library, kiu nun haveblas kun ĉi tiu eldono de MPLAB XC8. La Gvidilo de Uzanto de MPLAB® XC8 C Kompililo/aŭ AVR® MCU ne plu inkluzivas la dokumentadon por ĉi tiuj normaj funkcioj. Ĉi tiuj informoj nun troveblas en la Referenca Gvidilo de Microchip Unified Standard Library. Notu, ke iuj funkcioj antaŭe difinitaj de avr-libc ne plu disponeblas. (Vidu Bibliotekon):'. funkcieco...)
Inteligenta IO Kiel parto de la novaj unuigitaj bibliotekoj, IO-funkcioj en la presaj kaj skanaj familioj nun estas kutimo generitaj sur ĉiu konstruo, surbaze de kiel ĉi tiuj funkcioj estas uzataj en la programo. Ĉi tio povas konsiderinde redukti la rimedojn uzatajn de programo.
Smart IO-asista opcio Dum analizado de vokoj al inteligentaj IO-funkcioj (kiel ekzemple printf () aŭ scanf () ), la kompililo ne povas ĉiam determini el la formatĉeno aŭ konkludi el la argumentoj tiujn konvertajn specifilojn postulitajn per la voko. Antaŭe, la kompililo ĉiam farus neniujn supozojn kaj certigus ke plene funkciaj IO-funkcioj estis ligitaj en la finan programbildon. Nova – msmart-io-format=fmt opcio estis aldonita tiel ke la kompililo povas anstataŭe esti informita fare de la uzanto de la konvertaj specifiloj uzitaj de inteligentaj IO-funkcioj kies uzado estas ambigua, malhelpante tro longajn IO-rutinojn esti ligitaj. (Vidu smart-io-format Opcion por pliaj detaloj.)
Metante kutimajn sekciojn Antaŭe, la opcio -Wl, –sekcio-komenco nur metis la specifitan sekcion ĉe la petita adreso kiam la ligila skripto difinis eligsekcion kun la sama nomo. Kiam tio ne estis la kazo, la sekcio estis metita ĉe adreso elektita de la ligilo kaj la opcio estis esence ignorita. Nun la opcio estos honorita por ĉiuj kutimaj sekcioj, eĉ se la ligila skripto ne difinas la sekcion. Notu, tamen, ke por normaj sekcioj, tia . teksto,. bss aŭ . datumoj, la plej taŭga asignanto ankoraŭ havos kompletan kontrolon pri ilia lokigo, kaj la opcio ne havos efikon. Uzu la opcion -Wl, -Tsection=aldoni, kiel priskribite en la gvidilo de la uzanto.
Versio 2.32
Stako Gvidado Havebla kun PRO-kompila permesilo, la stakgvida funkcio de la kompililo povas esti uzata por taksi la maksimuman profundon de iu ajn stako uzata de programo. Ĝi konstruas kaj analizas la vokgrafeon de programo, determinas la stakan uzadon de ĉiu funkcio, kaj produktas raporton, el kiu la profundo de stakoj uzitaj per la programo povas esti konkludita. Ĉi tiu funkcio estas ebligita per la opcio -mchp-stack-usage komandlinia. Resumo de stak-uzo estas presita post ekzekuto. Detala stakraporto estas havebla en la mapo file, kiun oni povas peti en la kutima maniero.
Subteno de nova aparato disponeblas por la sekvaj AVR-partoj: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32, AVR48DBXNUMX, AVRXNUMXDBXNUMX kaj.
Retirigita aparato subteno Subteno ne plu disponeblas por la sekvaj AVR-partoj: AVR16DA28, AVR16DA32 kaj, AVR16DA48.
Versio 2.31
Neniu.
Versio 2.30
Nova opcio por malhelpi datumkomenciĝon Nova -mno-data-ini t-opcio de ŝoforo malhelpas la inicialigon de datumoj kaj la malplenigon de bss-sekcioj. Ĝi funkcias subpremante la eligon de la do_ copy_ datumoj kaj d o_ clear_ bss simboloj en asembleo files, kiu siavice malhelpos la inkludon de tiuj rutinoj de la ligilo.
Plibonigitaj optimumigoj Kelkaj optimumigaj plibonigoj estis faritaj, inkluzive de la forigo de redundaj reveninstrukcioj, la forigo de kelkaj saltoj sekvantaj skip-se-bit-is instrukcion, kaj plibonigita procedura abstraktado kaj la kapablo ripeti tiun procezon.
Pliaj opcioj nun estas disponeblaj por kontroli kelkajn el ĉi tiuj optimumigoj, specife -f-sekciaj ankroj, kiu permesas aliron de senmovaj objektoj esti farita relative al unu simbolo; -mpai deracioj=n, kiu permesas la nombron de proceduraj abstraktaj ripetoj esti ŝanĝita de la defaŭlta de 2; kaj, -mpa- call cost- shortcall, kiu elfaras pli agreseman proceduran abstraktadon, en la espero ke la ligilo povas malstreĉi longajn vokojn. Ĉi tiu lasta opcio povas pliigi kodgrandecon se la subestaj supozoj ne estas realigitaj.
Nova aparato-subteno Subteno disponeblas por la sekvaj AVR-partoj: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, kaj AVR128DB64.
Retirigita aparato Subteno Subteno ne plu disponeblas por la sekvaj AVR-partoj: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616C, ATA6617C, kaj ATA664251C, kaj ATAXNUMX.
Versio 2.29 (Funkcia Sekureca Eldono)
Kapo file por kompililo enkonstruitaj Por certigi ke la kompililo povas konformi al lingvospecifoj kiel ekzemple MISRA, la kaplinio file, kiu estas aŭtomate inkluzivita de , estis ĝisdatigita. Ĉi tiu kaplinio enhavas la prototipojn por ĉiuj enkonstruitaj funkcioj, kiel _buil tin _avrnop () kaj _buil tin_ avr delay_ cikloj () . Iuj enkonstruitaj eble ne kongruas kun MISRA; ĉi tiuj povas esti preterlasitaj aldonante la difini _Xe_ STRICT_ MISRA al la kompillinio de kompililo. La enkonstruitaj kaj iliaj deklaroj estis ĝisdatigitaj por uzi fikslarĝajn tipojn.
Versio 2.20
Nova aparato-subteno Subteno disponeblas por la sekvaj AVR-partoj: ATTINY1624, ATTINY1626 kaj ATTINY1627.
Pli bona plej taŭga asigno La plej taŭga alsignilo (BFA) en la kompililo estis plibonigita tiel ke sekcioj estas asignitaj en ordo permesanta pli bonan optimumigon. La BFA nun subtenas nomitajn adresspacojn kaj pli bone pritraktas datumajn inicialigon.
Plibonigita procedura abstraktado La proceduraj abstraktaj optimumoj nun estas faritaj sur pli da kodsekvencoj. Antaŭaj situacioj kie ĉi tiu optimumigo eble pliigis kodgrandecon estis traktitaj igante la optimumigan kodon konscia pri la rubkolekta procezo de la ligilo.
Manko de AVR Assembler La AVR Assembler ne plu estas inkluzivita kun ĉi tiu distribuo.
Versio 2.19 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.10
Koda Priraportado Ĉi tiu eldono inkluzivas funkcion pri koda kovrado, kiu faciligas analizon de kiom la fontkodo de projekto estis efektivigita. Uzu la opcion -mcodecov=ram por ebligi ĝin. Post ekzekuto de la programo sur via aparataro, informoj pri koda kovrado estos komparita en la aparato, kaj ĉi tio povas esti transdonita al kaj montrita de la MPLAB X IDE per koda kovra kromaĵo. Vidu la IDE-dokumentadon por informoj pri ĉi tiu kromaĵo akirebla. La #pragma mcodecov povas esti uzata por ekskludi postajn funkciojn de la priraporta analizo. Ideale oni aldonu la pragmon komence de la file ekskludi tiun tuton file de la priraporta analizo. Alternative, la atributo ( (mcodecov) ) povas esti uzita por ekskludi specifan funkcion de la priraportadanalizo.
Aparato priskribo files Nova aparato file nomita avr chipinfo. html troviĝas en la dosierujo docs de la kompilila distribuo. Ĉi tio file listigas ĉiujn aparatojn subtenatajn de la kompililo. Alklaku nomon de aparato, kaj ĝi malfermos paĝon montrante ĉiujn permeseblajn agordajn bitojn/valorajn parojn por tiu aparato, kun eksamples.
Procedura abstraktado Proceduraj abstraktaj optimumigoj, kiuj anstataŭigas oftajn blokojn de kunigkodo kun vokoj al eltirita kopio de tiu bloko, estis aldonitaj al la kompililo. Tiuj estas faritaj per aparta aplikaĵo, kiu estas aŭtomate alvokita de la kompililo kiam elektas nivelon 2, 3 aŭ optimumojn. Ĉi tiuj optimumigoj reduktas kodgrandecon, sed ili povas redukti ekzekutrapidecon kaj kodsencimigeblon.
Procedura abstraktado povas esti malŝaltita ĉe pli altaj optimumigaj niveloj uzante la opcion -mno-pa, aŭ povas esti ebligita ĉe pli malaltaj optimumigaj niveloj (laŭ via permesilo) per -mpa. Ĝi povas esti malŝaltita por objekto file uzante -mno-pa-on-file=filenomo, aŭ malŝaltita por funkcio uzante -mno-pa sur funkcio= funkcio.
Ene de via fontkodo, procedura abstraktado povas esti malŝaltita por funkcio uzante _attribute_ ( (nopa)) kun la difino de la funkcio, aŭ per uzado de _nopa, kiu disetendiĝas al atributo ( (nopa, noinline)) kaj tiel malhelpas funkcion enlinio de okazi kaj ekzisti abstraktado de enliniita kodo.
Ŝlosu bitsubtenon en pragma La #pragma agordo nun povas esti uzata por specifi la AVR-ŝlosilbitojn same kiel la aliajn agordajn bitojn. Kontrolu la informojn pri avr-blato. html file (menciita supre) por la agordo/valorparoj por uzi kun ĉi tiu pragma.
Nova aparato-subteno Subteno disponeblas por la sekvaj partoj: AVR28DA128, AVR64DA128, AVR32DA128 kaj AVR48DA128.
Versio 2.05
Pli da pecoj por via dolaro La macOS-versio de ĉi tiu kompililo kaj permesila administranto nun estas 64-bita aplikaĵo. Ĉi tio certigos, ke la kompililo instalos kaj funkcios sen avertoj pri lastatempaj versioj de macOS.
Konst-objektoj en programa memoro La kompililo nun povas meti konst-kvalifikitajn objektojn en la programon Flash-memoron, prefere ol havi ĉi tiujn lokitajn en RAM. La kompililo estis modifita tiel ke konst-kvalifikitaj tutmondaj datenoj estas stokitaj en programa fulmmemoro kaj tiuj datenoj povas esti rekte kaj nerekte aliritaj uzante la konvenajn program-memorinstrukciojn. Ĉi tiu nova funkcio estas ebligita defaŭlte sed povas esti malŝaltita per la opcio -mno-const-data-in-progmem. Por avrxmega3 kaj avrtiny-arkitekturoj, ĉi tiu funkcio ne estas postulata kaj ĉiam estas malŝaltita, ĉar programmemoro estas mapita en la datenadrespacon por tiuj aparatoj.
Norma senpage Senlicencaj (Senpagaj) versioj de ĉi tiu kompililo nun permesas optimumigojn ĝis kaj inkluzive de nivelo 2. Ĉi tio permesos similan, kvankam ne identan, eliron al kio antaŭe estis ebla uzante Norman permesilon.
Bonvenon AVRASM2 La AVRASM2 asemblero por 8-bitaj aparatoj nun estas inkluzivita en la XC8-kompila instalilo. Ĉi tiu asemblero ne estas uzata de la kompililo XC8, sed disponeblas por projektoj bazitaj sur manskribita kunigfonto.
Nova aparato-subteno Subteno disponeblas por la sekvaj partoj: ATMEGA1608, ATMEGA1609, ATMEGA808 kaj ATMEGA809.
Versio 2.00
Altnivela Ŝoforo Nova pelilo, nomita xc8-cc, nun sidas super la antaŭa avr-gcc pelilo kaj la xc8 pelilo, kaj ĝi povas voki la taŭgan kompililon surbaze de la elekto de la cela aparato. Ĉi tiu ŝoforo akceptas opciojn de GCC-stilaj, kiuj estas aŭ tradukitaj por aŭ trapasitaj al la plenumata kompililo. Ĉi tiu pelilo permesas al simila aro de opcioj kun simila semantiko esti uzata kun iu ajn AVR aŭ PIC-celo kaj estas tiel la rekomendita maniero alvoki la kompililon. Se bezonate, la malnova avr-gcc-ŝoforo povas esti vokita rekte uzante la malnovstilaj opcioj, kiujn ĝi akceptis en pli fruaj versioj de kompililo.
Komuna C-Interfaco Ĉi tiu kompililo nun povas konformiĝi al la MPLAB Common C Interface, permesante al fontkodo esti pli facile portita trans ĉiuj MPLAB XC-kompililoj. La opcio -mext=cci petas ĉi tiun funkcion, ebligante alternan sintakson por multaj lingvaj etendoj.
Nova bibliotekisto-ŝoforo Nova bibliotekistoŝoforo estas poziciigita super la antaŭa PIC-libr-bibliotekisto kaj la AVR avr-ar-bibliotekisto. Ĉi tiu ŝoforo akceptas opciojn de GCC-arkivisto-stilaj opcioj, kiuj estas aŭ tradukitaj por aŭ transdonitaj al la bibliotekisto estanta ekzekutita. La nova ŝoforo permesas al simila aro de opcioj kun simila semantiko esti uzata por krei aŭ manipuli ajnan PIC aŭ AVR-bibliotekon file kaj estas tiel la rekomendinda maniero alvoki la bibliotekiston. Se bezonate por heredaĵprojektoj, la antaŭa bibliotekisto povas esti vokita rekte uzante la malnovstilaj opcioj kiujn ĝi akceptis en pli fruaj kompililversioj.
Migrado-Temoj
La sekvantaroj estas funkcioj kiuj nun estas pritraktitaj alimaniere de la kompililo. Ĉi tiuj ŝanĝoj povas postuli modifon al via fontkodo se portas kodon al ĉi tiu kompilila versio. La versinumero en la subtitoloj indikas la unuan kompililon por subteni la sekvajn ŝanĝojn.
Versio 2.40
Neniu.
Versio 2.39 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.36
Neniu.
Versio 2.35
Pritraktado de ŝnuraj bazoj (XCS-2420) Por certigi konsistencon kun aliaj XC-kompililoj, la XC8-ĉen-al-funkcioj, kiel strtol () ktp., ne plu provos konverti enigŝnuron se la bazo specifita estas pli granda ol 36 kaj anstataŭe agordos errno al EINVAL. La C-normo ne precizigas la konduton de la funkcioj kiam ĉi tiu baza valoro estas superita.
Nekonvenaj rapidecoptimumoj Proceduraj abstraktaj optimumoj estis ebligitaj dum elektado de nivelo 3-optimumoj (-03). Ĉi tiuj optimumigoj reduktas kodgrandecon koste de kodrapideco, do ne devus esti faritaj. Projektoj uzantaj ĉi tiun optimumigan nivelon eble vidos diferencojn en koda grandeco kaj ekzekutrapideco kiam ili estas konstruitaj per ĉi tiu eldono.
Biblioteko-funkcieco La kodo por multaj el la normaj C-bibliotekaj funkcioj nun venas de la Unified Standard Library de Microchip, kiu povus elmontri malsaman konduton en kelkaj cirkonstancoj kompare kun tiu disponigita fare de la antaŭa avr-libc-biblioteko. Por ekzample, ne plu necesas ligi en la lprintf_flt biblioteko (-print _flt opcio) por ŝalti formatitan IO-subtenon por float-formataj specifiloj. La inteligentaj IO-ecoj de la Microchip Unified Standard Library faras ĉi tiun opcion superflua. Aldone, la uzo de _p sufiksitaj rutinoj por ĉeno kaj memorfunkcioj (ekz. strcpy_P () ktp .. ) kiuj funkcias sur const ĉenoj en flash ne plu estas necesa. La normaj C-rutinoj (ekz. strcpy ()) funkcios ĝuste kun tiaj datumoj kiam la funkcio const-data-in-program-memory estas ebligita.
Versio 2.32
Neniu.
Versio 2.31
Neniu.
Versio 2.30
Neniu.
Versio 2.29 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.20
Ŝanĝita DFP-aranĝo La kompililo nun supozas malsaman aranĝon uzatan de DFP-oj (Device Family Packs). Ĉi tio signifos, ke pli malnova DFP eble ne funkcios kun ĉi tiu eldono, kaj pli malnovaj kompililoj ne povos uzi la plej novajn DFP-ojn.
Versio 2.19 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.10
Neniu
Versio 2.05
Konst-objektoj en programmemoro Notu ke la defaŭlte, konst-kvalitaj objektoj estos metitaj kaj alireblaj en programmemoron (kiel priskribite ĉi tie). Ĉi tio influos la grandecon kaj ekzekutrapidecon de via projekto, sed devus redukti RAM-uzadon. Ĉi tiu funkcio povas esti malŝaltita, se necese, uzante la opcion -mnoconst- da ta-in-progmem.
Versio 2.00
Agordaj fuzeoj La aparataj agordaj fuzeoj nun povas programi uzante agordan pragmaron sekvitan de agordaj-valoraj paroj por specifi la fuzestanton, ekz.
#pragma agordo WDT0N = AROJ
#pragma config B0DLEVEL = B0DLEVEL_4V3
Absolutaj objektoj kaj funkcioj Objektoj kaj funkcioj nun povas esti metitaj ĉe specifa adreso en memoron uzante la CCI _at (adreso) specifilo, ekz.ample: #inkluzivi int foobar ĉe (Ox800100); char at(Ox250) get ID(int offset) { … } La argumento al ĉi tiu specifilo devas esti konstanto kiu reprezentas la adreson ĉe kiu la unua bajto aŭ instrukcio estos metita. RAM-adresoj estas indikitaj uzante ofseton de 0x800000. Ebligu la CCI uzi ĉi tiun funkcion.
Nova interrompa funkcio sintakso La kompililo nun akceptas la CCI-interrompon (num) specifilon por indiki ke C-funkcioj estas interrompotraktiloj. La specifisto prenas interrompan nombron, ekzample: #inkluzivi malplena interrompo (SPI STC_ vect _num) spi Isr (void) { … }
Fiksaj Problemoj
La sekvantaroj estas korektoj kiuj estis faritaj al la kompililo. Ĉi tiuj povus ripari erarojn en la generita kodo aŭ ŝanĝi la funkciadon de la kompililo al tio, kio estis celita aŭ specifita de la gvidilo de la uzanto. La versinumero en la subtitoloj indikas la unuan kompililon kiu enhavas korektojn por la sekvaj problemoj. La enkrampitaj etikedoj en la titolo estas la identigo de tiu temo en la spura datumbazo. Ĉi tiuj povas esti utilaj se vi bezonas kontakti subtenon.
Notu, ke iuj aparato-specifaj problemoj estas korektitaj en la Aparato Familia Pako (DFP) asociita kun la aparato. Vidu la MPLAB Pack Manager por informoj pri ŝanĝoj faritaj al DFP-oj kaj por elŝuti la plej novajn pakojn.
Versio 2.40
Tro malstreĉita (XCS-2876) Kiam oni uzis la opcion -mrelax, la kompililo ne asignis kelkajn sekciojn kune, rezultigante malpli optimumajn kodgrandojn. Tio eble okazis kun kodo kiu uzis la novajn MUSL-bibliotekojn aŭ kun malfortaj simboloj.
Mapa funkcio ne malŝaltita kiel dirite en averto (XCS-2875) La cost-data-in-config mappedprogmem-funkcio dependas de la kosto-datumo-en-proem-funkcio ebligita. Se la funkcio cost-data-ipconfig-mapped-proem estis eksplicite ebligita uzante la opcion kaj la funkcio cost-data-inprogmem estis malŝaltita, la ligpaŝo malsukcesis, malgraŭ averta mesaĝo deklarante ke la funkcio cons data- in-config-mapped-proem estis aŭtomate malŝaltita, kio ne estis tute ĝusta. La funkcio const-data-in-config-mapped-proem nun estas plene malŝaltita en ĉi tiu situacio.
DFP ŝanĝas por ĝuste aliri NVMCTRL (XCS-2848) La rultempa lanĉa kodo uzata de AVR64EA-aparatoj ne konsideris, ke la registro NVMCTRL estis sub Protekto pri Ŝanĝo de Konfiguracio (CCP) kaj ne povis agordi la IO SFR al la paĝo uzata de la funkcio de kompililo const-data-in configmapped-proem. Ŝanĝoj faritaj en AVR-Ex_DFP versio 2.2.55 permesos al la rultempa lanĉa kodo ĝuste skribi al ĉi tiu registro.
DFP-ŝanĝoj por eviti fulmmapon (XCS-2847) Solvo por problemo kun la funkcio de fulmmapa aparato raportita en la AVR128DA28/32/48/64 Silicon Errato (DS80000882) estis efektivigita. La funkcio de kompililo const-data-in-config-mapped-proem ne estos aplikata defaŭlte por tuŝitaj aparatoj, kaj ĉi tiu ŝanĝo aperos en AVR-Ex_DFP versio 2.2.160.
Konstrua eraro kun sinhf aŭ coshf (XCS-2834) Provoj uzi la sinhf () aŭ coshf () bibliotekfunkcioj rezultigis ligan eraron, priskribante nedifinitan referencon. La mankanta funkcio referencita nun estis inkluzivita en la kompilila distribuo.
Konstruaj eraroj kun nopa (XCS-2833) Uzante la nopa atributon kun funkcio kiu havis sian asemblernomon specifita uzante kiel () ekigis erarmesaĝojn de la asemblero. Ĉi tiu kombinaĵo ne eblas.
Variada funkciofiasko kun montrilargumentoj (XCS-2755, XCS-2731) Funkcioj kun varia nombro da argumentoj atendas 24-bitajn (_memo-tipo) montrilojn esti pasitaj en la varia argumentlisto kiam la kosto-datumoj-en-proem funkcio estas ebligita. Argumentoj kiuj estis montriloj al datenmemoro estis pasitaj kiel 16-bitaj objektoj, kaŭzante kodfiaskon kiam ili estis finfine legitaj. Kiam la kontraŭdatuma funkcio estas ebligita, ĉiuj argumentoj de 16-bitaj montriloj nun estas konvertitaj al 24-bitaj montriloj. strtoxxx-bibliotekaj funkcioj malsukcesaj (XCS-2620) Kiam la funkcio const-data-in-proem estis ebligita, la eniga parametro en la strtoxxx-bibliotekaj funkcioj ne estis konvene ĝisdatigita por fontoĉenargumentoj ne en programmemoro.
Atentigoj pri nevalidaj rolantaroj (XCS-2612) La kompililo nun eligos eraron se kosto-en-proem-funkcio estas ebligita kaj la adreso de ĉeno laŭvorta estas eksplicite ĵetita al datuma adresspaco (forlasante la konst-kvalifikilon), ekz.ample, (uint8 t *) “Saluton Mondo!”. Averto estas problemo se la adreso povus esti malvalida kiam konst-datummontrilo estas eksplicite ĵetita al datuma adresspaco.
Lokigo de nekomencigitaj konst-objektoj (XCS-2408) Neinicialigitaj konst kaj konst v olatilaj objektoj ne estis metitaj en programmemoron sur aparatojn kiuj mapas ĉion aŭ parton de sia programmemoro en la datenadrespacon. Por tiuj aparatoj, tiaj objektoj nun estas metitaj en programmemoron, igante sian funkciadon kongrua kun aliaj aparatoj.
Versio 2.39 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.36
Eraro dum prokrasto (XCS-2774) Malgrandaj ŝanĝoj en la defaŭlta Libera reĝimo optimumigo malhelpis konstantan faldado de operandaj esprimoj al la prokrastaj enkonstruitaj funkcioj, rezultigante ilin esti traktataj kiel nekontaktoj kaj ekigante la eraron: _buil tin avr delay_ cikloj atendas ak ompile tempo entjerkonstanto.
Versio 2.35
Apuda asigno uzante _at (XCS-2653) Apuda asigno de multobjektaj lokoj en sekcio kun la sama nomo kaj uzante ĉe () ne funkciis ĝuste. Por ekzample: constchararrl [ ] ĉe tri butte ((sekcio sur(“.misses”))) ĉe (Ox50 0 ) = {Oxo , Ox CD} ; kosto char arr2[ ] at tri butte ((sekcio(“.my s eke”))) = {Bovoj, Bovo FE }; devus esti metinta arr2 tuj post arilo.
Specifante sekciajn komencajn adresojn (XCS-2650) La opcio -Wal, –sekcio-komenco silente malsukcesis meti sekciojn ĉe la nomumita komenca adreso. Ĉi tiu problemo estis riparita por iuj laŭordinare nomitaj sekcioj; tamen, ĝi ne funkcios por iuj normaj sekcioj, kiel ekzemple . teksto aŭ . bss, kiu devas esti metita uzante opcion -Wl, -T.
Linker kraŝas dum malstreĉiĝo (XCS-2647) Kiam la optimumigo -relax estis ebligita kaj estis kodo aŭ datumsekcioj kiuj ne kongruis en la disponebla memoro, la ligilo kraŝis. Nun, en tia cirkonstanco, erarmesaĝoj estas elsenditaj anstataŭe.
Malbona EEPROM-aliro (XCS-2629) La leproma _read_ blokrutino ne funkciis ĝuste sur Mega-aparatoj kiam la opcio -monist-data-in-proem estis ebligita (kiu estas la defaŭlta stato), rezultigante EEPROM-memoron ne esti legita ĝuste.
Nevalida memorasigno (XCS-2593, XCS-2651) Kiam la opcio -Text aŭ -Tata ligilo (ekzample trapasita per -Wl-ŝoforo opcio) estas specifita, la responda teksto/datuma regiono origino estis ĝisdatigita; tamen, la fina adreso ne estis alĝustigita sekve, kio povus esti kondukinta al la regiono superanta la memorintervalon de la cela aparato.
Nevalida ATtiny-interrompa kodo (XCS-2465) Dum konstruado por Tatin-aparatoj kaj la optimumigoj estis malŝaltitaj (-00), interrompaj funkcioj eble ekigis operandojn ekster-intervalajn asemblermesaĝojn.
Opcioj ne trapasitaj (XCS-2452) Kiam oni uzis la opcion -Wl kun multoblaj, komo-separataj ligilaj opcioj, ne ĉiuj ligilaj opcioj estis transdonitaj al la ligilo.
Eraro nerekte legante programmemoron (XCS-2450) En kelkaj kazoj, la kompililo produktis internan eraron (nerekonebla insn) dum legado de dubajta valoro de montrilo al programmemoro.
Versio 2.32
Dua aliro de biblioteko malsukcesas (XCS-2381) Alvokante la Vindozan version de la xc8-ar. exe biblioteko-arkivisto duan fojon por aliri ekzistantan bibliotekan arkivon eble malsukcesis kun nekapabla renomi erarmesaĝon.
Versio 2.31
Neklarigitaj fiaskoj de kompililo (XCS-2367) Kiam vi ruliĝas sur Vindozaj platformoj, kiuj havis la sisteman provizoran dosierujon agordita al vojo, kiu inkludis punkton'.' karaktero, la kompililo eble malsukcesis efektivigi.
Versio 2.30
Tutmondaj etikedoj mislokigitaj post skizado (XCS-2299) Manskribita kunigkodo kiu metas tutmondajn etikedojn ene de kunigsekvencoj kiuj estas faktorigitaj per procedura abstraktado eble ne estis ĝuste repoziciigitaj.
Malstreĉa kraŝo (XCS-2287) Uzi la -merlad-opcion eble kaŭzis la ligilon kraŝi kiam vostsaltaj malstreĉiĝooptimumoj provis forigi ret-instrukcion kiuj ne estis ĉe la fino de sekcio.
Kraŝo dum optimumigado de etikedoj kiel valoroj (XCS-2282) Kodo uzanta la "Etikedojn kiel valorojn" GNU C-lingva etendo eble kaŭzis kraŝi la procedurajn abstraktajn optimumojn, kun Skizita VMA-intervalo de ripari eraro.
Ne tiom konstante (XCS-2271) La prototipoj por startoj () kaj aliaj funkcioj de ne plu specifu la ne-norman kostokvalifikilon sur resenditaj ĉenmontriloj kiam la -monist-data enprogmem funkcio estas malŝaltita. Notu, ke kun avrxmega3 kaj avertin-aparatoj, ĉi tiu funkcio estas konstante ebligita.
Perditaj inicialigiloj (XCS-2269) Kiam pli ol unu variablo en tradukunuo estis metita en sekcion (uzante sekcion aŭ atributon ((sekcio))), kaj la unua tia variablo estis nul pravaligita aŭ ne havis inicialigilon, inicialigiloj por aliaj variabloj en la sama tradukunuo kiuj estis metitaj en la sama sekcio estis perditaj.
Versio 2.29 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.20
Eraro kun longaj komandoj (XCS-1983) Dum uzado de AVR-celo, la kompililo eble ĉesis kun a file ne trovita eraro, se la komandlinio estis ege granda kaj enhavis specialajn signojn kiel citaĵojn, inversajn oblikvojn ktp.
Neasignita rodata sekcio (XCS-1920) La AVR-ligilo ne asignis memoron por specialadaptitaj rodataj sekcioj dum konstruado por avrxmega3 kaj avrtiny-arkitekturoj, eble produktante memorinterkovrajn erarojn.
Versio 2.19 (Funkcia Sekureca Eldono)
Neniu.
Versio 2.10
Fiaskoj de translokado (XCS-1891) La plej taŭga asignilo estis lasi memorajn "truojn" inter sekcioj post ligila malstreĉiĝo. Krom fragmentado de memoro, tio pliigis la eblecon de ekzisti ligilaj translokadfiaskoj rilatigantaj al komputil-relativaj saltoj aŭ vokoj iĝantaj ekster intervalo.
Instrukcioj ne transformitaj per malstreĉiĝo (XCS-1889) Linker-malstreĉiĝo ne okazis por salti aŭ voki instrukciojn, kies celoj iĝas atingeblaj se malstreĉite.
Mankas funkcieco (XCSE-388) Pluraj difinoj el , kiel clock_ div_ t kaj clock_prescale_set (), ne estis difinitaj por aparatoj, inkluzive de la ATmega324PB, ATmega328PB, ATtiny441, kaj ATtiny841.
Mankas makrooj La antaŭprocesoraj makrooj_ xcs _MODE_, _xcs VERSION, _xc, kaj xcs ne estis aŭtomate difinitaj de la kompililo. Ĉi tiuj nun haveblas.
Versio 2.05
Interna kompilila eraro (XCS-1822) Dum konstruado sub Vindozo, interna kompilila eraro eble estis produktita dum optimumigado de kodo.
RAM-superfluo ne detektita (XCS-1800, XCS-1796) Programoj kiuj superis tiun disponeblan RAM ne estis detektitaj fare de la kompililo en kelkaj situacioj, rezultigante rultempan kodfiaskon.
Forlasita fulmmemoro (XCS-1792) Por avrxmega3 kaj avrtiny-aparatoj, partoj de la fulmmemoro eble estis lasitaj neprogramitaj fare de la MPLAB X IDE.
Malsukceso efektivigi ĉefan (XCS-1788) En kelkaj situacioj kie la programo havis neniujn tutmondajn variablojn difinitajn, la rultempa startkodo ne eliris kaj la ĉefa () funkcio neniam estis atingita.
Neĝusta memorinformo (XCS-1787) Por avrxmega3 kaj avrtiny-aparatoj, la avr-granda programo raportis, ke nurlegeblaj datumoj konsumas RAM anstataŭ programmemoro.
Malĝusta programmemoro legita (XCS-1783) Projektoj kompilitaj por aparatoj kun programmemoro mapita en la datenadrespacon kaj kiuj difinas objektojn uzantajn la PROGMEM-makroon/atributon eble legis tiujn objektojn de la malĝusta adreso.
Interna eraro kun atributoj (XCS-1773) Interna eraro okazis se vi difinis montrobjektojn per la
_at () aŭ attribute() ĵetonoj inter la montrilnomo kaj dereferencita tipo, ekz.ample, char *
_ĉe ( 0x80015 0) cp; Nun averto estas eligita se tia kodo estas renkontita.
Malsukceso efektivigi ĉefan (XCS-1780, XCS-1767, XCS-1754) Uzado de EEPROM-variabloj aŭ difinado de fuzeoj uzante la agordan pragmaron eble kaŭzis malĝustan datumkomencigon kaj/aŭ ŝlosis programekzekuton en la rultempa lanĉa kodo, antaŭ ol atingi main () .
Fuzia eraro kun etaj aparatoj (XCS-1778, XCS-1742) La aparatoj attiny4/5/9/10/20/40 havis malĝustan fuzeolongon specifitan en sia kaplinio files kiuj kondukas al ligilaj eraroj dum provado konstrui kodon kiu difinis fuzeojn.
Segmenta misfunkciado (XCS-1777) Intermita segmentigfaŭlto estis korektita.
Asemblerkraŝo (XCS-1761) La avr-as asemblero eble kraŝis kiam la kompililo funkciis sub Ubuntu 18.
Objektoj ne malbaritaj (XCS-1752) Nekomencigitaj senmovaj stokaddaŭraj objektoj eble ne estis forigitaj de la rultempa lanĉa kodo.
Konflikta aparato-specifo ignorita (XCS-1749) La kompililo ne generis eraron kiam pluraj aparataj specifopcioj estis uzitaj kaj indikis malsamajn aparatojn.
Memorkorupto de amaso (XCS-1748) La heap_ startsimbolo estis malĝuste fiksita, rezultigante la eblecon de ordinaraj variabloj esti koruptitaj per la amaso.
Eraro pri translokado de ligilo (XCS-1739) Ligila translokiĝa eraro eble estis elsendita kiam kodo enhavis rjmp aŭ rcall kun celo ĝuste 4k bajtoj for.
Versio 2.00
Neniu.
Konataj Problemoj
La sekvantaroj estas limigoj en la operacio de la kompililo. Ĉi tiuj povas esti ĝeneralaj kodaj restriktoj, aŭ
devioj de informoj enhavitaj en la manlibro de la uzanto. La enkrampitaj etikedoj en la titolo estas la identigo de tiu temo en la spura datumbazo. Ĉi tio povas esti utila se vi bezonas kontakti subtenon. Tiuj eroj kiuj ne havas etikedojn estas limigoj kiuj priskribas reĝimon operandi kaj kiuj verŝajne restos en efiko konstante.
MPLAB X IDE-Integriĝo
MPLAB IDE integriĝo Se Kompililo estas uzota de MPLAB IDE, tiam vi devas instali MPLAB IDE antaŭ instali Kompililon.
Kodgeneracio
PA memorasignofiasko (XCS-2881) Dum uzado de la proceduraj abstraktaj optimumigiloj, la ligilo eble raportos memorajn asigno-erarojn kiam kodgrandeco estas proksima al la kvanto de disponebla programmemoro sur la aparato, kvankam la programo devus povi konveni la disponeblan spacon.
Ne tiom inteligenta Smart-IO (XCS-2872) La smart-io-trajto de la kompililo generos validan sed suboptimuman kodon por la sprint-funkcio se la marbordo-datumo-en-proem-trajto estis malŝaltita aŭ se la aparato havas sian tutan fulmon mapita en datummemoron.
Eĉ malpli inteligenta Smart-IO (XCS-2869) La funkcio smart-io de la kompililo generos validan sed suboptimuman kodon kiam la opcioj -floe kaj -fno-buil tin estas ambaŭ uzataj.
Suboptimuma nurlegebla datumlokigo (XCS-2849) La ligilo estas nuntempe ne konscia pri la APPCODE kaj APPDATA memorsekcioj, nek la [Ne-]Read-While-Write sekcioj en la memormapo. Kiel rezulto, ekzistas malgranda ŝanco ke la ligilo eble asignos nurlegeblajn datumojn en netaŭga areo de memoro. La ŝanco de mislokigitaj datumoj pliiĝas se la ĉefaĵo coast-data-in-pragma estas ebligita, precipe se la ĉefaĵo coast-data-in-config-mapped-proem ankaŭ estas ebligita. Ĉi tiuj funkcioj povas esti malŝaltitaj se necese.
Objekto file pretiga ordo (XCS-2863) La ordo en kiu objektoj files estos procesitaj de la ligilo povus malsami surbaze de la uzo de proceduraj abstraktaj optimumoj (-mpa opcio). Ĉi tio nur influus kodon, kiu difinas malfortajn funkciojn tra pluraj moduloj.
Eraro de ligilo kun absoluta (XCS-2777) Kiam objekto fariĝis absoluta ĉe adreso ĉe la komenco de RAM kaj nekomencigitaj objektoj ankaŭ estis difinitaj, ligila eraro eble estos ekigita.
Mallongaj vekiĝidentigiloj (XCS-2775) Por ATA5700/2-aparatoj, la PHID0/1-registroj estas nur difinitaj kiel 16 bitoj larĝaj, prefere ol 32 bitoj larĝaj.
Kraŝo de Linker dum vokado de simbolo (XCS-2758) La ligilo povus kraŝi se la opcio -merlad pelilo estas uzata kiam la fontkodo vokas simbolon, kiu estis difinita per la opcio -Wl, –defsym.
Malĝusta inicialigo (XCS-2679) Estas diferenco inter kie la komencaj valoroj por kelkaj tutmondaj/senmovaj bajt-grandaj objektoj estas metitaj en datenmemoron kaj kie la variabloj estos aliritaj ĉe rultempo.
komencita malĝuste metas malplena (XCS-2652) En kazoj kie subjekta ĉeno por konvertiĝo per deklarita () enhavas kio ŝajnas esti glitkoma nombro en eksponenta formato kaj ekzistas neatendita signo post e-karaktero, tiam la malplena adreso, se disponigite, montros al la signo post la e kaj ne la e mem. Por ekzample: deklaris ("hoey", malplena); rezultigos malplenan indikadon al la x-signo.
Malbonaj nerektaj funkciovokoj (XCS-2628) En kelkaj kazoj, funkciovokoj faritaj per funkciomontrilo stokita kiel parto de strukturo povus malsukcesi.
strtof donas nulon por deksesuma flosiloj (XCS-2626) La bibliotekfunkcioj strtof () et al kaj scanf () et al, ĉiam konvertiĝos deksesuma glitkoma nombro kiu ne specifas eksponenton al
nulo. Por ekzample: stator ("Strigo", &malplena); redonos la valoron 0, ne 1.
Nepreciza staka konsilisto-mesaĝado (XCS-2542, XCS-2541) En iuj okazoj, la averto pri stakkonsilisto pri rekurso aŭ nedeterminita stako uzata (eble per la uzo de alloca()) ne estas elsendita.
Fiasko kun duplikata interrompa kodo (XCS-2421) Kie pli ol unu interrompa funkcio havas la saman korpon, la kompililo povus havi la eligon por unu interrompa funkcio voki la alian. Ĉi tio rezultos, ke ĉiuj vok-rompitaj registroj estos konservitaj nenecese, kaj la interrompoj estos ebligitaj eĉ antaŭ ol la epilogo de la nuna interrompa prizorganto ruliĝos, kio povus konduki al kodmalsukceso.
Konst-objektoj ne en programmemoro (XCS-2408) Por avrxmega3 kaj avertins projektoj neidealigitaj konst-objektoj estas metitaj en datummemoron, kvankam averto sugestas ke ili estis metitaj en programmemoron. Ĉi tio ne influos aparatojn, kiuj ne havas programmemoron mapitan en la datummemorspacon, nek influos ajnan objekton, kiu estas pravigita.
Malbona eligo kun nevalida DFP-vojo (XCS-2376) Se la kompililo estas alvokita kun nevalida DFP-vojo kaj 'spec' file ekzistas por la elektita aparato, la kompililo ne raportas la mankantan aparatan pakaĵon kaj anstataŭe elektas la 'spec' file, kiu tiam povus konduki al nevalida eligo. La "speco" files eble ne estas ĝisdatigitaj kun la distribuitaj DFP-oj kaj estis destinitaj por uzo nur kun internaj kompililtestoj.
Memorinterkovro nerimarkita (XCS-1966) La kompililo ne detektas la memorinterkovron de objektoj igitaj absolutaj ĉe adreso (per ĉe ()) kaj aliaj objektoj uzante la sekcion () specifilo kaj kiuj estas ligitaj al la sama adreso.
Fiasko kun bibliotekfunkcioj kaj _memeo (XCS-1763) Nomitaj limbikaj flosaj funkcioj kun argumento en la _memo-adresspaco povus malsukcesi. Notu ke bibliotekrutinoj estas nomitaj de kelkaj C-funkciigistoj, do, ekzample, la sekva kodo estas tuŝita: return regFloatVar > memxFloatVar;
Limigita limbica efektivigo (AVRTC-731) Por la produktoj ATTiny4/5/9/10/20/40, la norma C/Math-biblioteko efektivigo en limbic estas tre limigita aŭ ne ĉeestas.
Programmemorlimigoj (AVRTC-732) Programmemorbildoj preter 128 kb estas subtenataj de la ilĉeno; tamen, estas konataj okazoj de ligilo abortas sen malstreĉiĝo kaj sen helpema erarmesaĝo prefere ol generi la postulatajn funkciostumojn kiam la opcio -relax estas uzata.
Nomspacaj limigoj (AVRTC-733) Nomitaj adresspacoj estas subtenataj de la ilĉeno, kondiĉe de la limigoj menciitaj en la gvida sekcio de la uzanto Specialaj Tipoj Kvalifikiĝintoj.
Horzonoj La bibliotekfunkcioj supozas GMT kaj ne subtenas lokajn horzonojn, tiel loka tempo () revenos la saman tempon kiel gummito (), ekz.ample.
KLIENTA SUBTENO
file:///Aplikoj/microehip/xc8/v 2 .40/docs/Legu min_X C 8_ por A VR. htm
Dokumentoj/Rimedoj
![]() |
MICROCHIP MPLAB XC8 C Kompilprogramo [pdf] Manlibro de la posedanto MPLAB XC8 C, MPLAB XC8 C Kompililo Programaro, Kompililo Programaro, Programaro |