MICROCHIP-LOGO

MICROCHIP XC8 C Compiler Version 2.45 Release Notes para sa AVR MCU

MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-PRO

Impormasyon ng Produkto

Ang MPLAB XC8 C Compiler ay isang software tool na ginagamit para sa pag-target ng mga Microchip AVR device. Ito ay idinisenyo upang i-compile ang C code at bumuo ng executable filepara sa mga device na ito. Ang bersyon ng compiler na tinutukoy sa user manual na ito ay 2.45, na may opisyal na petsa ng pagbuo ng Agosto 18, 2023. Ang nakaraang bersyon ay 2.41, na binuo noong Pebrero 8, 2023. Ang compiler ay may kasamang Functional Safety Manual, na nagbibigay ng karagdagang impormasyon at mga alituntunin kapag ginagamit ang mga compiler ng MPLAB XC na may mga functional na aplikasyon sa kaligtasan. Ang manwal na ito ay kasama sa pakete ng dokumentasyon kapag bumili ka ng lisensya para sa kaligtasan. Sinusuportahan ng MPLAB XC8 C Compiler ang lahat ng magagamit na 8-bit na AVR MCU device sa oras ng paglabas. Maaari kang sumangguni sa avr_chipinfo.html file sa direktoryo ng doc ng compiler para sa isang listahan ng lahat ng mga sinusuportahang device at mga setting ng bit ng configuration ng mga ito. Mayroong iba't ibang mga edisyon ng MPLAB XC8 compiler na magagamit. Ang lisensyadong (PRO) na edisyon ay nagbibigay ng mas mataas na antas ng pag-optimize kumpara sa libreng edisyon. Upang i-activate ang compiler bilang isang lisensyadong produkto, kailangan mong bumili ng activation key. Gayunpaman, ang hindi lisensyadong bersyon ay maaaring gamitin nang walang katiyakan nang walang lisensya. Para sa mga functional na application ng kaligtasan, isang MPLAB XC8 Functional Safety compiler ay magagamit. Nangangailangan ito ng functional na lisensya sa kaligtasan na binili mula sa Microchip para sa pag-activate. Kapag na-activate na, lahat ng antas ng pag-optimize at mga feature ng compiler ay magagamit. Sinusuportahan din ng MPLAB XC Functional Safety Compiler ang Network Server License. Ang detalyadong impormasyon tungkol sa pag-install, pag-activate, mga uri ng lisensya, at mga isyu sa paglilipat ay matatagpuan sa dokumento ng Pag-install at Paglilisensya ng MPLAB XC C Compiler (DS50002059).

Mga Tagubilin sa Paggamit ng Produkto

  1. Bago patakbuhin ang software ng MPLAB XC8 C Compiler, basahin ang manwal ng gumagamit para sa mahalagang impormasyon at mga tagubiling partikular sa pag-target ng mga Microchip AVR device.
  2. Kung gumagamit ka ng compiler para sa 8-bit na PIC device, sumangguni sa MPLAB XC8 C Compiler Release Notes para sa PIC na dokumento.
  3. Tiyaking natutugunan ng iyong operating system ang mga kinakailangan ng system para sa pagpapatakbo ng compiler. Ang mga binary para sa macOS ay nilagdaan ng code at na-notaryo. Ang MPLAB XC Network License Server ay available para sa Microsoft Windows 10 at mas mataas, Ubuntu 18.04 at mas bago, at macOS 10.15 at mas bago. Tandaan na ang MPLAB XC Network License Server ay hindi nasubok sa mga operating system na ito.
  4. Ang MPLAB XC Network License Server ay maaaring patakbuhin sa mga Virtual Machine ng sinusuportahang OS gamit ang isang virtual machine na lisensya para sa mga lisensya ng network (SW006021-VM). Ang lahat ng 32-bit na bersyon ng MPLAB XC Network Server ay itinigil simula sa bersyon 3.00.
  5. Upang i-activate ang MPLAB XC8 C Compiler bilang isang lisensyadong (PRO) na produkto, bumili ng activation key. Magbibigay ito ng mas mataas na antas ng pag-optimize kumpara sa libreng bersyon. Gayunpaman, ang hindi lisensyadong compiler ay maaaring patakbuhin nang walang katiyakan nang walang lisensya.
  6. Kung gumagamit ka ng MPLAB XC8 Functional Safety Compiler para sa mga functional na application ng kaligtasan, dapat itong i-activate gamit ang isang functional na lisensya sa kaligtasan na binili mula sa Microchip. Hindi gagana ang compiler nang walang lisensyang ito. Kapag na-activate na, maaari kang pumili ng anumang antas ng pag-optimize at gamitin ang lahat ng feature ng compiler. Ang Network Server License ay sinusuportahan ng release na ito ng MPLAB XC Functional Safety Compiler.
  7. Para sa mga detalyadong tagubilin sa pag-install, pag-activate, at paglilisensya ng MPLAB XC8 C Compiler, sumangguni sa dokumento ng Pag-install at Paglilisensya ng MPLAB XC C Compiler (DS50002059).
  8. Kung pinapatakbo mo ang compiler sa ilalim ng lisensya sa pagsusuri, makakatanggap ka ng babala sa panahon ng compilation kapag ikaw ay nasa loob ng 14 na araw ng pagtatapos ng iyong panahon ng pagsusuri. Ang parehong babala ay ibinibigay kung ikaw ay nasa loob ng 14 na araw ng pagtatapos ng iyong subscription sa HPA.

Tapos naview

Panimula
Ang release na ito ng Microchip MPLAB® XC8 C compiler ay naglalaman ng ilang bagong feature, pag-aayos ng bug, at suporta para sa mga bagong device.

Petsa ng Pagbuo
Ang opisyal na petsa ng pagbuo ng bersyon ng compiler na ito ay ang 18 Agosto 2023.

Nakaraang Bersyon
Ang dating bersyon ng compiler ng MPLAB XC8 C ay 2.41, na binuo noong Pebrero 8, 2023.

Functional Safety Manual
Ang isang Functional Safety Manual para sa mga MPLAB XC compiler ay makukuha sa documentation package kapag bumili ka ng functional safety license.

Mga Lisensya at Bersyon ng Bahagi
Ang MPLAB XC8 C Compiler para sa mga tool ng AVR MCU ay isinulat at ipinamahagi sa ilalim ng GNU General Public License (GPL) na nangangahulugan na ang source code nito ay malayang ipinamamahagi at magagamit sa publiko. Ang source code para sa mga tool sa ilalim ng GNU GPL ay maaaring i-download nang hiwalay mula sa Microchip's weblugar. Maaari mong basahin ang GNU GPL sa file pinangalanang matatagpuan ang subdirectory ng iyong direktoryo ng pag-install. Ang isang pangkalahatang talakayan ng mga prinsipyong pinagbabatayan ng GPL ay maaaring matagpuan dito. Ibinigay ang code ng suporta para sa header files, linker script, at runtime library ay proprietary code at hindi sakop sa ilalim ng GPL. Ang compiler na ito ay isang pagpapatupad ng GCC na bersyon 5.4.0, binutils na bersyon 2.26, at gumagamit ng avr-libc na bersyon 2.0.0.

Mga Kinakailangan sa System
Ang MPLAB XC8 C compiler at ang licensing software na ginagamit nito ay available para sa iba't ibang operating system, kabilang ang 64-bit na bersyon ng mga sumusunod: Propesyonal na edisyon ng Microsoft® Windows® 10, Ubuntu® 18.04, macOS® 13.2 (Ventura), at Fedora 34. Ang mga binary para sa Windows ay nilagdaan ng code. Ang mga binary para sa macOS ay nilagdaan ng code at na-notaryo. Ang MPLAB XC Network License Server ay magagamit para sa iba't ibang 64-bit operating system, kabilang ang Microsoft Windows 10 at mas mataas; Ubuntu 18.04 at mas mataas; o macOS 10.15 at mas bago. Ang server ay maaari ding tumakbo sa iba't ibang mga operating system kabilang ang Windows Server, mga pamamahagi ng Linux, tulad ng Oracle® Enterprise Linux® at Red Hat® Enterprise Linux pati na rin ang mga mas lumang bersyon ng mga sinusuportahang operating system. Gayunpaman, ang MPLAB XC Network License Server ay hindi nasubok sa mga operating system na ito. Ang MPLAB XC Network License Server ay maaaring patakbuhin sa mga Virtual Machine ng sinusuportahang OS gamit ang isang virtual machine na lisensya para sa mga lisensya ng network (SW006021-VM). Ang lahat ng 32-bit na bersyon ng MPLAB XC Network Server ay itinigil simula sa bersyon 3.00.

Sinusuportahan ang mga aparato
Sinusuportahan ng compiler na ito ang lahat ng available na 8-bit na AVR MCU device sa oras ng paglabas. Tingnan ang avr_chipinfo.html (sa doc directory ng compiler) para sa isang listahan ng lahat ng sinusuportahang device. Ang mga file na ito ay naglilista rin ng mga setting ng configuration bit para sa bawat device.

Mga Edisyon at Pag-upgrade ng Lisensya
Ang MPLAB XC8 compiler ay maaaring i-activate bilang isang lisensyado (PRO) o walang lisensya (Libre) na produkto. Kailangan mong bumili ng activation key para bigyan ng lisensya ang iyong compiler. Ang isang lisensya ay nagbibigay-daan para sa isang mas mataas na antas ng pag-optimize kumpara sa Libreng produkto. Ang isang hindi lisensyadong compiler ay maaaring patakbuhin nang walang katiyakan nang walang lisensya. Ang isang MPLAB XC8 Functional Safety compiler ay dapat na i-activate gamit ang isang functional na lisensya sa kaligtasan na binili mula sa Microchip. Hindi gagana ang compiler nang walang lisensyang ito. Kapag na-activate na, maaari kang pumili ng anumang antas ng pag-optimize at gamitin ang lahat ng feature ng compiler. Ang release na ito ng MPLAB XC Functional Safety Compiler ay sumusuporta sa Network Server License. Tingnan ang dokumento ng Pag-install at Paglilisensya ng MPLAB XC C Compiler (DS50002059) para sa impormasyon sa mga uri ng lisensya at pag-install ng compiler na may lisensya.

Pag-install at pag-activate
Tingnan din ang mga seksyong Mga Isyu at Limitasyon sa Paglipat para sa mahalagang impormasyon tungkol sa pinakabagong manager ng lisensya na kasama sa compiler na ito. Kung gumagamit ng MPLAB IDE, tiyaking i-install ang pinakabagong bersyon ng MPLAB X IDE na 5.0 o mas bago bago i-install ang tool na ito. Ihinto ang IDE bago i-install ang compiler. Patakbuhin ang .run (Linux) o .app (macOS) compiler installer application, hal XC8-1.00.11403-windows.exe at sundin ang mga direksyon sa screen. Inirerekomenda ang default na direktoryo ng pag-install. Kung gumagamit ka ng Linux, dapat mong i-install ang compiler gamit ang isang terminal at mula sa isang root account. Mag-install gamit ang isang macOS account na may mga pribilehiyo ng administrator. Ang pag-activate ay isinasagawa na ngayon nang hiwalay sa pag-install. Tingnan ang dokumento License Manager para sa MPLAB® XC C Compiler (DS52059) para sa higit pang impormasyon. Kung pipiliin mong patakbuhin ang compiler sa ilalim ng lisensya sa pagsusuri, makakakuha ka na ngayon ng babala sa panahon ng compilation kapag nasa loob ka ng 14 na araw ng pagtatapos ng iyong panahon ng pagsusuri. Ang parehong babala ay ibinibigay kung ikaw ay nasa loob ng 14 na araw ng pagtatapos ng iyong subscription sa HPA. Ang XC Network License Server ay isang hiwalay na installer at hindi kasama sa single-user compiler installer. Sinusuportahan na ngayon ng XC License Manager ang roaming ng mga lumulutang na lisensya ng network. Nilalayon sa mga mobile user, ang tampok na ito ay nagbibigay-daan sa isang lumulutang na lisensya na umalis sa network sa loob ng maikling panahon. Gamit ang tampok na ito, maaari kang magdiskonekta mula sa network at gamitin pa rin ang iyong MPLAB XC compiler. Tingnan ang doc folder ng XCLM install para sa higit pa sa feature na ito. Kasama sa MPLAB X IDE ang isang Licenses window (Tools > Licenses) para biswal na pamahalaan ang roaming.

Paglutas ng mga Isyu sa Pag-install
Kung nakakaranas ka ng mga kahirapan sa pag-install ng compiler sa ilalim ng alinman sa mga operating system ng Windows, subukan ang mga sumusunod na mungkahi.

  • Patakbuhin ang pag-install bilang isang administrator.
  • Itakda ang mga pahintulot ng installer application sa 'Buong kontrol'. (I-right click ang file, piliin ang Properties, Security tab, piliin ang user, i-edit.)
  • Itakda ang mga pahintulot ng temp folder sa 'Full Control'.

Upang matukoy ang lokasyon ng temp folder, i-type ang %temp% sa Run command (Windows logo key + R). Magbubukas ito ng dialog ng explorer ng file na nagpapakita ng direktoryo na iyon at magbibigay-daan sa iyong matukoy ang landas ng folder na iyon.

Compiler Documentation
Ang mga gabay ng gumagamit ng compiler ay mabubuksan mula sa HTML na pahina na bubukas sa iyong browser kapag nag-click sa asul na help button sa MPLAB X IDE dashboard, gaya ng ipinahiwatig sa screenshot.MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-1

Kung gumagawa ka para sa 8-bit na mga target ng AVR, ang Gabay sa Gumagamit ng MPLAB® XC8 C Compiler para sa AVR® MCU ay naglalaman ng impormasyon sa mga opsyon at feature ng compiler na naaangkop sa arkitektura na ito.

Suporta sa Customer
Maaari kang magtanong sa ibang mga gumagamit ng produktong ito sa XC8 Forum. Tinatanggap ng Microchip ang mga ulat ng bug, mungkahi o komento tungkol sa bersyon ng compiler na ito. Mangyaring idirekta ang anumang mga ulat ng bug o mga kahilingan sa tampok sa pamamagitan ng Support System.

Mga Update sa Dokumentasyon

Para sa on-line at up-to-date na mga bersyon ng dokumentasyon ng MPLAB XC8, pakibisita ang Online Technical Documentation ng Microchip website.
Bago o na-update na dokumentasyon ng AVR sa release na ito:

wala

  • Ang AVR® GNU Toolchain to MPLAB® XC8 Migration Guide ay naglalarawan ng mga pagbabago sa source code at build ng mga opsyon na maaaring kailanganin kung magpasya kang mag-migrate ng isang C-based na proyekto mula sa AVR 8-bit GNU Toolchain patungo sa Microchip MPLAB XC8 C Compiler.
  • Ang Microchip Unified Standard Library Reference Guide ay naglalarawan ng pag-uugali at interface sa mga function na tinukoy ng Microchip Unified Standard Library, pati na rin ang nilalayong paggamit ng mga uri at macro ng library. Ang ilan sa impormasyong ito ay dating nasa MPLAB® XC8 C Compiler User's Guide para sa AVR® MCU. Ang impormasyon ng library na partikular sa device ay nakapaloob pa rin sa gabay ng compiler na ito.
  • Kung nagsisimula ka pa lang sa mga 8-bit na device at ang MPLAB XC8 C Compiler, ang MPLAB® XC8 User's
  • Gabay para sa Mga Naka-embed na Inhinyero - Ang AVR® MCUs (DS50003108) ay may impormasyon sa pag-set up ng mga proyekto sa MPLAB X IDE at pagsulat ng code para sa iyong unang proyekto ng MPLAB XC8 C. Ang gabay na ito ay ipinamahagi na ngayon kasama ng compiler.
  • Ang Hexmate User's Guide ay inilaan para sa mga nagpapatakbo ng Hexmate bilang isang stand-alone na application.

Ano ang Bago

Ang mga sumusunod ay mga bagong feature na target ng AVR na sinusuportahan na ngayon ng compiler. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler na sumusuporta sa mga sumusunod na tampok.

Bersyon 2.45
Universal license manager (XC8-3175, XCLM-224) Ang macOS na bersyon ng license manager na ginamit kasama ng compiler ay unibersal na ngayon, na nag-aalok ng native na suporta para sa parehong Intel- at M1-based na mga makina. Ang bersyon ng Linux ng manager ng lisensya ay nangangailangan na ngayon ng hindi bababa sa bersyon 2.25 ng glibc. Mga unibersal na binary ng Mac (XC8-3168, XC8-2951) Ang mga compiler binary file para sa macOS ay unibersal na ngayon, na nag-aalok ng katutubong suporta para sa parehong Intel- at M1-based na mga makina. Binawasan ang mga floating-point na laki ng library (XC8-3112, XC8-3071) Ang mga pagpapahusay ay ginawa sa mga floating-point na function ng library, kabilang ang sinf() pow(), sqrt(), expf(), log1fp(), at nextafterf() , na nakakakita ng pagbawas sa laki ng code para sa mga gawaing ito. Available na ngayon ang Suporta sa suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28, at AVR16EB32.

Bersyon 2.41

  • Suporta sa bootrow (XC8-3053) Ilalagay ng compiler ang nilalaman ng anumang mga seksyon na may prefix na .bootrow sa address na 0x860000 sa HEX file. Ang mga seksyong ito ay ginagamit para sa BOOTROW memory, na idinisenyo para sa pag-iimbak ng mga susi at iba pang secure na impormasyon na dapat lang ma-access ng isang bootloader.
  • Redundant return elimination (XC8-3048) Aalisin na ngayon ng compiler ang mga redundant ret na tagubilin sa mga function na may tail jump kapag ginamit ang mga custom na linker script. Ito ay isang katulad na pag-optimize sa ginawa dati, ngunit ito ay ginagawa na ngayon sa lahat ng mga orphaned na seksyon, kahit na ang isang custom na linker script ay ginagamit at ang pinakamahusay na fit allocation scheme ay wala sa play.
  • Pagbabago ng uri ng oras (XC8-2982, 2932) Ang karaniwang uri ng library ng C99, ang time_t ay binago mula sa isang mahabang mahabang tungo sa isang hindi napirmahang mahabang uri, na nagbibigay ng mga pagpapahusay sa laki ng code sa ilang mga function na nauugnay sa oras, tulad ng mktime().
  • Bagong nop (XC8-2946, 2945) Ang macro NOP() ay naidagdag sa . Ang macro na ito ay naglalagay ng nop no-operation na pagtuturo sa output.
  • Update sa XCLM (XC8-2944) Ang license manager na ginamit sa compiler ay na-update at ngayon ay mas tumutugon kapag sinusuri ang mga detalye ng lisensya ng compiler.
  • Trampmga olined na tawag (XC8-2760) Ang compiler ay maaari na ngayong magsagawa ng pagpapalit ng long-form na mga tagubilin sa tawag na may mas maiikling relative na mga tawag kapag ang mga relatibong anyo ng mga tagubilin ay karaniwang wala sa saklaw ng kanilang destinasyon. Sa sitwasyong ito, susubukan ng compiler na palitan ng rcall instructions sa isang jmp call instruction na 'trampoline' execution sa kinakailangang address, halimbawaample:

Bersyon 2.40

  • Available na ngayon ang Suporta sa suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64EA48, AVRXNUMXEAXNUMX, AVRXNUMXEAXNUMX, AVRXNUMXEA.
  • Pinahusay na pamamaraang abstraction Ang procedural abstraction (PA) optimization tool ay napabuti upang ang code na naglalaman ng function call instruction (call/rcall) ay maaaring mabalangkas. Ito ay magaganap lamang kung ang stack ay hindi ginagamit upang ipasa ang mga argumento o makakuha ng return value mula sa function. Ginagamit ang stack kapag tumatawag sa isang function na may variable na listahan ng argumento o kapag tumatawag sa isang function na tumatagal ng mas maraming argumento kaysa sa mga register na itinalaga para sa layuning ito. Maaaring i-disable ang feature na ito gamit ang – mno-pa-outline-calls na opsyon, o ang procedure abstraction ay maaaring ganap na i-disable para sa object file at function sa pamamagitan ng paggamit ng -mno-pa-on-file -mno-pa-on-function, ayon sa pagkakabanggit, o sa pamamagitan ng paggamit ng nopa attribute (__nopa specifier) nang pili sa mga function.
  • Code coverage macro Tinutukoy na ngayon ng compiler ang macro __CODECOV kung ang isang wastong -mcodecov na opsyon ay tinukoy.
  • Opsyon sa pagpapareserba ng memorya Tatanggap na ngayon ng xc8-cc driver ang -mreserve=space@start:end na opsyon kapag gumagawa para sa mga target ng AVR. Inilalaan ng opsyong ito ang tinukoy na hanay ng memorya sa alinman sa puwang ng memorya ng data o program, na pumipigil sa linker na i-populate ang code o mga bagay sa lugar na ito.
  • Mas matalinong matalinong IO Maraming mga pagpapahusay ang ginawa sa mga function ng Smart IO, kabilang ang mga pangkalahatang pag-tweak sa printf core code, na tinatrato ang %n conversion specifier bilang isang independiyenteng variant, nagli-link sa vararg pop routines on demand, gamit ang mas maiikling uri ng data kung posible para sa paghawak. IO function arguments, at factoring common code sa lapad ng field at precision handling. Maaari itong magresulta sa makabuluhang code at pagtitipid ng data, pati na rin ang pagtaas ng bilis ng pagpapatupad ng IO.

Bersyon 2.39 (Functional Safety Release)
Network Server License Sinusuportahan ng release na ito ng MPLAB XC8 Functional Safety Compiler ang Network Server License.

Bersyon 2.36
wala.

Bersyon 2.35

  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28, at AVR64DD32.
  • Pinahusay na paglipat ng konteksto Ang bagong -mcall-isr-prologues na opsyon ay nagbabago kung paano nai-save ng mga interrupt function ang mga register sa pagpasok at kung paano ibinabalik ang mga register na iyon kapag natapos na ang interrupt routine. Gumagana ito sa katulad na paraan sa -mcall-prologues na opsyon, ngunit nakakaapekto lamang sa mga interrupt function (ISRs).
  • Mas pinahusay na paglipat ng konteksto Ang bagong -mgas-isr-prologues na opsyon ay kumokontrol sa code ng switch ng konteksto na nabuo para sa maliliit na naka-interrupt na mga gawain sa serbisyo. Kapag pinagana, ang tampok na ito ay magkakaroon ng assembler na i-scan ang ISR para sa paggamit ng rehistro at i-save lamang ang mga ginamit na register na ito kung kinakailangan.
  • Nako-configure na flash mapping Ang ilang device sa AVR DA at AVR DB family ay may SFR (eg FLMAP) na tumutukoy kung aling 32k na seksyon ng memory ng program ang imamapa sa memorya ng data. Ang bagong – mconst-data-in-config-mapped-progmem na opsyon ay maaaring gamitin upang ilagay ng linker ang lahat ng -kwalipikadong data sa isang 32k na seksyon at awtomatikong simulan ang nauugnay na rehistro ng SFR upang matiyak na ang data na ito ay nakamapa sa espasyo ng memorya ng data , kung saan ito ay maa-access nang mas epektibo.
  • Microchip Unified Standard Libraries Lahat ng MPLAB XC compiler ay magbabahagi ng Microchip Unified Standard Library, na available na ngayon sa release na ito ng MPLAB XC8. Hindi na kasama ng MPLAB® XC8 C Compiler User's Guide para sa AVR® MCU ang dokumentasyon para sa mga karaniwang function na ito. Ang impormasyong ito ay matatagpuan na ngayon sa Microchip Unified Standard Library Reference Guide. Tandaan na ang ilang functionality na dating tinukoy ng avr-libc ay hindi na magagamit. (Tingnan ang functionality ng Library.)
  • Smart IO Bilang bahagi ng mga bagong pinag-isang library, ang mga function ng IO sa printf at scanf na mga pamilya ay custom-generated na ngayon sa bawat build, batay sa kung paano ginagamit ang mga function na ito sa program. Ito ay maaaring makabuluhang bawasan ang mga mapagkukunang ginagamit ng isang programa.
  • Opsyon sa tulong ng Smart IO Kapag sinusuri ang mga tawag sa mga function ng smart IO (tulad ng printf() o scanf() hindi palaging matukoy ng compiler mula sa string ng format o mahinuha mula sa mga argumento ang mga tinukoy na conversion na kinakailangan ng tawag. Dati, palaging gagawin ng compiler walang pagpapalagay at tiyakin na ang mga ganap na gumaganang IO function ay na-link sa panghuling larawan ng programa Isang bagong -msmart-io-format=fmt na opsyon ay naidagdag upang ang Ang compiler ay maaaring ipaalam sa halip ng gumagamit ng mga tinukoy na conversion na ginagamit ng mga smart IO function na ang paggamit ay hindi maliwanag, na pumipigil sa labis na mahabang IO na mga gawain na maiugnay (Tingnan ang smart-io-format Option para sa higit pang mga detalye.)
  • Paglalagay ng mga custom na seksyon Noong nakaraan, ang -Wl,–section-start na opsyon ay inilagay lamang ang tinukoy na seksyon sa hiniling na address kapag tinukoy ng linker script ang isang output section na may parehong pangalan. Kapag hindi iyon ang kaso, ang seksyon ay inilagay sa isang address na pinili ng linker at ang opsyon ay mahalagang binalewala. Ngayon ang opsyon ay pararangalan para sa lahat ng custom na seksyon, kahit na ang linker script ay hindi tukuyin ang seksyon. Tandaan, gayunpaman, na para sa mga karaniwang seksyon, tulad ng .text, .bss o .data , ang pinakamahusay na fit allocator ay magkakaroon pa rin ng kumpletong kontrol sa kanilang pagkakalagay, at ang opsyon ay walang epekto. Gamitin ang opsyong -Wl,-Tsection=addr, gaya ng inilarawan sa gabay ng gumagamit.

Bersyon 2.32

  • Stack Guidance Available nang may PRO compiler license, ang stack guidance feature ng compiler ay maaaring gamitin para tantiyahin ang maximum depth ng anumang stack na ginagamit ng isang program. Binubuo at sinusuri nito ang call graph ng isang program, tinutukoy ang paggamit ng stack ng bawat function, at gumagawa ng ulat, kung saan maaaring mahinuha ang lalim ng mga stack na ginamit ng program. Ang tampok na ito ay pinagana sa pamamagitan ng -mchp-stack-usage command-line na opsyon. Ang isang buod ng paggamit ng stack ay naka-print pagkatapos ng pagpapatupad. Ang isang detalyadong ulat ng stack ay magagamit sa file ng mapa, na maaaring hilingin sa karaniwang paraan.
  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX, AVRXNUMXDBXNUMX
  • Hindi na available ang suporta sa suporta sa binawi na device para sa mga sumusunod na bahagi ng AVR: AVR16DA28, AVR16DA32 at, AVR16DA48.

Bersyon 2.31
wala.

Bersyon 2.30

  • Bagong opsyon para maiwasan ang pagsisimula ng data Pinipigilan ng bagong -mno-data-init driver na opsyon ang pagsisimula ng data at ang pag-clear ng mga seksyon ng bss. Gumagana ito sa pamamagitan ng pagsugpo sa output ng mga simbolo ng do_clear_bss sa mga file ng pagpupulong, na mapipigilan naman ang pagsasama ng mga nakagawiang iyon ng linker.
  • Mga pinahusay na pag-optimize Ang ilang mga pagpapabuti sa pag-optimize ay ginawa, kabilang ang pag-alis ng mga paulit-ulit na mga tagubilin sa pagbabalik, ang pag-alis ng ilang mga jumps kasunod ng isang skip-if-bit-is na pagtuturo, at pinahusay na pamamaraan ng abstraction at ang kakayahang ulitin ang prosesong ito.
    Available na ngayon ang mga karagdagang opsyon para kontrolin ang ilan sa mga pag-optimize na ito, partikular -fsection-anchors, na nagbibigay-daan sa pag-access ng mga static na bagay na maisagawa nang may kaugnayan sa isang simbolo; -mpa- iterations=n , na nagpapahintulot sa bilang ng mga procedure abstraction iteration na mabago mula sa default na 2; at, -mpa-callcost-shortcall, na nagsasagawa ng mas agresibong pamamaraan ng abstraction, sa pag-asang makakapag-relax ang linker ng mahahabang tawag. Ang huling opsyon na ito ay maaaring tumaas ang laki ng code kung ang mga pinagbabatayan na pagpapalagay ay hindi natanto.
  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64DB128, AVR28B AVR128DB32, at AVR128DB48.
  • Hindi na available ang Inalis na Suporta sa Suporta ng device para sa mga sumusunod na bahagi ng AVR: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616Q, ATA6617ATA664251.

Bersyon 2.29 (Functional Safety Release)

  • Header file para sa compiler built-in Upang matiyak na ang compiler ay makakaayon sa mga detalye ng wika tulad ng MISRA, ang , ay na-update. Ang header na ito ay naglalaman ng mga prototype para sa lahat ng in-built na function, gaya ng __builtin_avr_nop() at __builtin_avr_delay_cycles() . Ang ilang mga built-in ay maaaring hindi sumusunod sa MISRA; ang mga ito ay maaaring tanggalin sa pamamagitan ng pagdaragdag ng define __XC_STRICT_MISRA sa compiler command line. Ang mga built-in at ang kanilang mga deklarasyon ay na-update upang magamit ang mga uri ng fixed-width.

Bersyon 2.20

  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi ng AVR: ATTINY1624, ATTINY1626, at ATTINY1627.
  • Mas mahusay na pinakamahusay na angkop na paglalaan Ang pinakamahusay na angkop na allocation (BFA) sa compiler ay napabuti upang ang mga seksyon ay inilalaan sa isang order na nagpapahintulot sa mas mahusay na pag-optimize. Sinusuportahan na ngayon ng BFA ang mga pinangalanang puwang ng address at mas mahusay na pinangangasiwaan ang pagsisimula ng data.
  • Pinahusay na abstraction ng pamamaraan Ang mga pag-optimize ng procedural abstraction ay ginagawa na ngayon sa higit pang mga pagkakasunud-sunod ng code. Ang mga nakaraang sitwasyon kung saan ang pag-optimize na ito ay maaaring tumaas ang laki ng code ay natugunan sa pamamagitan ng pagpapaalam sa optimization code ng proseso ng pangongolekta ng basura ng linker.
  • Kawalan ng AVR Assembler Ang AVR Assembler ay hindi na kasama sa pamamahagi na ito.

Bersyon 2.19 (Functional Safety Release)
wala.

Bersyon 2.10

  • Code Coverage Ang release na ito ay may kasamang feature na saklaw ng code na nagpapadali sa mga pagsusuri sa lawak kung saan naisakatuparan ang source code ng isang proyekto. Gamitin ang opsyon -mcodecov=ram para paganahin ito. Pagkatapos ng pagpapatupad ng programa sa iyong hardware, ang impormasyon sa saklaw ng code ay iko-collate sa device, at ito ay maaaring ilipat sa at ipakita ng MPLAB X IDE sa pamamagitan ng isang code coverage plugin. Tingnan ang dokumentasyon ng IDE para sa impormasyon sa plugin na ito ay maaaring makuha.
    Maaaring gamitin ang #pragma nocodecov upang ibukod ang mga kasunod na function mula sa mga pagsusuri sa saklaw. Sa isip, ang pragma ay dapat idagdag sa simula ng file upang ibukod ang buong file mula sa mga pagsusuri sa saklaw. Bilang kahalili, ang __attribute__((nocodecov)) ay maaaring gamitin upang ibukod ang isang partikular na function mula sa mga pagsusuri sa saklaw.
  • Mga file ng paglalarawan ng device Ang isang bagong file ng device na tinatawag na avr_chipinfo.html ay matatagpuan sa direktoryo ng docs ng pamamahagi ng compiler. Inililista ng file na ito ang lahat ng device na sinusuportahan ng compiler. Mag-click sa pangalan ng device, at magbubukas ito ng page na nagpapakita ng lahat ng pinapayagang setting ng bit ng configuration/mga pares ng halaga para sa device na iyon, kasama ang examples.
  • Procedural abstraction Ang mga procedural abstraction optimization, na pumapalit sa mga karaniwang bloke ng assembly code ng mga tawag sa isang kinuhang kopya ng block na iyon, ay naidagdag sa compiler. Ang mga ito ay ginagampanan ng isang hiwalay na application, na awtomatikong hinihimok ng compiler kapag pumipili ng level 2, 3 o s optimizations. Binabawasan ng mga pag-optimize na ito ang laki ng code, ngunit maaari nilang bawasan ang bilis ng pagpapatupad at pagka-debug ng code. Ang abstraction ng pamamaraan ay maaaring hindi paganahin sa mas mataas na antas ng pag-optimize gamit ang opsyon -mno-pa, o maaaring paganahin sa mas mababang antas ng pag-optimize (napapailalim sa iyong lisensya) sa pamamagitan ng paggamit -mpa. Maaari itong hindi paganahin para sa isang object file gamit ang -mno-pa-on-file=filename , o hindi pinagana para sa isang function sa pamamagitan ng paggamit -mno-pa-on- function=function. Sa loob ng iyong source code, maaaring hindi paganahin ang abstraction ng pamamaraan para sa isang function sa pamamagitan ng paggamit ng __attribute__((nopa)) kasama ang definition ng function, o sa pamamagitan ng paggamit ng __nopa, na lumalawak sa __attribute__((nopa,noinline)) at sa gayon ay pinipigilan ang function inlining na maganap at mayroong abstraction ng inline na code.
  • Suporta sa lock bit sa pragma Ang #pragma config ay maaari na ngayong gamitin upang tukuyin ang AVR lock bits pati na rin ang iba pang configuration bits. Suriin ang avr_chipinfo.html file (nabanggit sa itaas) para sa mga pares ng setting/halaga na gagamitin sa pragma na ito.
  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi: AVR28DA128, AVR64DA128, AVR32DA128, at AVR48DA128.

Bersyon 2.05

  • Higit pang mga piraso para sa iyong pera Ang bersyon ng macOS ng compiler at manager ng lisensya na ito ay isang 64-bit na application. Titiyakin nito na mai-install at tatakbo ang compiler nang walang babala sa mga kamakailang bersyon ng macOS.
  • Const objects sa program memory Ang compiler ay maaari na ngayong maglagay ng const-qualified na objects sa program Flash memory, sa halip na ilagay ang mga ito sa RAM. Ang compiler ay binago upang ang const-qualified na pandaigdigang data ay naka-imbak sa program flash memory at ang data na ito ay maaaring direkta at hindi direktang ma-access gamit ang naaangkop na program-memory na mga tagubilin. Ang bagong feature na ito ay pinagana bilang default ngunit maaaring i-disable gamit ang -mno-const-data-in-progmem na opsyon. Para sa avrxmega3 at avrtiny na mga arkitektura, ang tampok na ito ay hindi kinakailangan at palaging hindi pinagana, dahil ang memorya ng programa ay nakamapa sa espasyo ng address ng data para sa mga device na ito.
  • Ang pamantayan para sa libreng Walang lisensyang (Libre) na mga bersyon ng compiler na ito ay nagbibigay-daan na ngayon sa mga pag-optimize hanggang sa at kabilang ang antas 2. Ito ay magpapahintulot sa isang katulad, bagama't hindi magkapareho, na output sa kung ano ang dating posible gamit ang isang Standard na lisensya.
  • Maligayang pagdating AVRASM2 Ang AVRASM2 assembler para sa 8-bit na device ay kasama na ngayon sa XC8 compiler installer. Ang assembler na ito ay hindi ginagamit ng XC8 compiler, ngunit magagamit para sa mga proyekto batay sa sulat-kamay na pinagmulan ng pagpupulong.
  • Available ang suporta sa bagong device para sa mga sumusunod na bahagi: ATMEGA1608, ATMEGA1609, ATMEGA808, at ATMEGA809.

Bersyon 2.00

  • Nangungunang Antas na Driver Ang isang bagong driver, na tinatawag na xc8-cc, ay nakaupo na ngayon sa itaas ng dating avr-gcc driver at ang xc8 driver, at maaari nitong tawagan ang naaangkop na compiler batay sa pagpili ng target na device. Ang driver na ito ay tumatanggap ng GCC-style na mga opsyon, na maaaring isinalin para sa o ipinasa sa compiler na isinasagawa. Ang driver na ito ay nagbibigay-daan sa isang katulad na hanay ng mga opsyon na may katulad na mga semantika na magamit sa anumang target ng AVR o PIC at sa gayon ay ang inirerekomendang paraan upang ma-invoke ang compiler. Kung kinakailangan, ang lumang avr-gcc driver ay maaaring direktang tawagan gamit ang mga lumang istilong opsyon na tinanggap nito sa mga naunang bersyon ng compiler.
  • Common C Interface Ang compiler na ito ay maaari na ngayong sumunod sa MPLAB Common C Interface, na nagpapahintulot sa source code na mas madaling ma-port sa lahat ng MPLAB XC compiler. Hinihiling ng opsyong -mext=cci ang feature na ito, na nagpapagana ng kahaliling syntax para sa maraming extension ng wika.
  • Bagong librarian driver Ang bagong librarian driver ay nakaposisyon sa itaas ng nakaraang PIC librarian at ang AVR avr-ar librarian. Ang driver na ito ay tumatanggap ng GCC-archiver-style na mga opsyon, na maaaring isinalin para sa o ipinapasa sa librarian na pinapagana. Ang bagong driver ay nagbibigay-daan sa isang katulad na hanay ng mga opsyon na may katulad na mga semantika na gamitin upang lumikha o magmanipula ng anumang PIC o AVR library file at sa gayon ay ang inirerekomendang paraan upang tawagan ang librarian. Kung kinakailangan para sa mga legacy na proyekto, maaaring direktang tawagan ang dating librarian gamit ang mga lumang-style na opsyon na tinanggap nito sa mga naunang bersyon ng compiler.

Mga Isyu sa Migrasyon

Ang mga sumusunod ay mga tampok na ngayon ay hinahawakan nang iba ng compiler. Ang mga pagbabagong ito ay maaaring mangailangan ng pagbabago sa iyong source code kung magpo-port ng code sa bersyon ng compiler na ito. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler upang suportahan ang mga pagbabagong kasunod.

Bersyon 2.45
wala.

Bersyon 2.41
Inalis ang mga hindi tumpak na function ng fma (XC8-2913) Ang C99 standard library ( ) ay hindi nag-compute ng multiply-add na may walang katapusang katumpakan sa isang rounding, ngunit sa halip ay nag-ipon ng mga error sa rounding sa bawat operasyon. Ang mga function na ito ay inalis mula sa ibinigay na library.

Bersyon 2.40
wala.

Bersyon 2.39 (Functional Safety Release)
wala.

Bersyon 2.36
wala.

Bersyon 2.35

  • Pangangasiwa ng mga string-to na base (XC8-2420) Upang matiyak ang pagkakapare-pareho sa iba pang XC compiler, ang XC8 string-to function, tulad ng strtol() atbp., ay hindi na magtatangka na mag-convert ng input string kung ang base na tinukoy ay mas malaki sa 36 at sa halip ay itatakda . Ang pamantayang C ay hindi tumutukoy sa pag-uugali ng mga pag-andar kapag nalampasan ang batayang halaga na ito.
  • Mga hindi naaangkop na pag-optimize ng bilis Ang mga pag-optimize ng abstraction ng pamamaraan ay pinagana kapag pumipili ng mga level 3 na pag-optimize (-O3). Binabawasan ng mga pag-optimize na ito ang laki ng code sa gastos ng bilis ng code, kaya hindi dapat ginawa. Ang mga proyektong gumagamit ng antas ng pag-optimize na ito ay maaaring makakita ng mga pagkakaiba sa laki ng code at bilis ng pagpapatupad kapag ginawa gamit ang release na ito.
  • Pag-andar ng Aklatan Ang code para sa marami sa mga karaniwang C library function ay nagmula na ngayon sa Microchip's Unified Standard Library, na maaaring magpakita ng iba't ibang pag-uugali sa ilang mga pangyayari kumpara sa ibinigay ng dating avr-libc library. Para kay exampHindi na kailangang mag-link sa library ng lprintf_flt (-lprintf_flt na opsyon) para i-on ang naka-format na suporta sa IO para sa mga specifier ng float-format. Ang matalinong mga feature ng IO ng Microchip Unified Standard Library ay ginagawang redundant ang opsyong ito. Bukod pa rito, hindi na kailangan ang paggamit ng _P suffixed routines para sa string at memory function (hal. strcpy_P() atbp.) na gumagana sa const string sa flash. Ang karaniwang C routines (hal. strcpy() ay gagana nang tama sa naturang data kapag ang const-data-in-program-memory na tampok ay pinagana.

Bersyon 2.32
wala.

Bersyon 2.31
wala.

Bersyon 2.30
wala.

Bersyon 2.29 (Functional Safety Release)
wala.

Bersyon 2.2
Binago ang layout ng DFP Ang compiler ay nagpapalagay na ngayon ng ibang layout na ginagamit ng mga DFP (Device Family Pack). Nangangahulugan ito na maaaring hindi gumana ang isang mas lumang DFP sa release na ito, at hindi magagamit ng mga mas lumang compiler ang mga pinakabagong DFP.

Bersyon 2.19 (Functional Safety Release)
wala.

Bersyon 2.10
wala

Bersyon 2.05
Const objects sa program memory Tandaan na ang bilang default, const-qualified na mga object ay ilalagay at ia-access sa program memory (tulad ng inilarawan dito). Maaapektuhan nito ang laki at bilis ng pagpapatupad ng iyong proyekto, ngunit dapat bawasan ang paggamit ng RAM. Maaaring hindi paganahin ang feature na ito, kung kinakailangan, gamit ang -mno-const-data-in-progmem na opsyon.

Bersyon 2.00

  • Configuration fuse Ang mga configuration fuse ng device ay maaari na ngayong i-program gamit ang isang config pragma na sinusundan ng setting-value pairs para tukuyin ang fuse state, hal #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • Mga ganap na bagay at function Ang mga bagay at function ay maaari na ngayong ilagay sa partikular na address sa memorya gamit ang CCI __at(address) specifier, para sa example:
    • #isama
      int foobar __at(0x800100);
      char __at(0x250) getID(int offset) { … }
      Ang argument sa specifier na ito ay dapat na isang pare-pareho na kumakatawan sa address kung saan ilalagay ang unang byte o pagtuturo. Ang mga address ng RAM ay ipinahiwatig sa pamamagitan ng paggamit ng offset na 0x800000. Paganahin ang CCI na gamitin ang feature na ito.
  • Bagong interrupt function syntax Tinatanggap na ngayon ng compiler ang CCI __interrupt(num) specifier upang ipahiwatig na ang C function ay mga interrupt handler. Ang specifier ay kumukuha ng interrupt na numero, halimbawaample: #isama void __interrupt(SPI_STC_vect_num) spi_Isr(void) { … }

Mga Naayos na Isyu

Ang mga sumusunod ay mga pagwawasto na ginawa sa compiler. Maaaring ayusin ng mga ito ang mga bug sa nabuong code o baguhin ang pagpapatakbo ng compiler sa nilayon o tinukoy ng gabay ng gumagamit. Ang numero ng bersyon sa mga subheading ay nagpapahiwatig ng unang bersyon ng compiler na naglalaman ng mga pag-aayos para sa mga kasunod na isyu. Ang (mga) naka-bracket na label sa pamagat ay ang pagkakakilanlan ng isyu sa database ng pagsubaybay. Maaaring maging kapaki-pakinabang ang mga ito kung kailangan mong makipag-ugnayan sa suporta.
Tandaan na ang ilang isyung partikular sa device ay itinatama sa Device Family Pack (DFP) na nauugnay sa device. Tingnan ang MPLAB Pack Manager para sa impormasyon sa mga pagbabagong ginawa sa mga DFP at upang i-download ang pinakabagong mga pack.

Bersyon 2.45

  • Nabigo ang roaming lisensya ng lisensya (XCLM-235) Ang mga roamed na lisensya ay nabigong gumana nang tama sa mga platform ng Linux gamit ang mga bersyon ng glibc na lumampas sa 2.28.
  • Panloob na error sa mga arrays ng mga istruktura (XC8-3069) Kapag naproseso ang multi-dimensional array na mga miyembro ng isang istraktura, ang address space qualifier ay hindi wastong na-propagated sa array. Ito ay humantong sa isang mismatch sa address space qualifier information at isang internal na error sa compiler. Ang sitwasyong ito ay naitama.
  • Maling pagsusulat sa mga uninitialized stream (ML-353, XC8-3100) Kung ang karaniwang output/error stream ay hindi tahasang na-setup gamit ang FDEV_SETUP_STREAM o _init_stdout/_init_stderr , ang pagtatangkang sumulat sa kanila ay nagresulta sa hindi natukoy na pag-uugali. Naapektuhan din nito ang mga pagsusulat mula sa mga function ng stdlib, tulad ng perror(). Anumang pagsusulat sa mga stream na ito bago ang mga ito ay nasimulan ay hindi na papansinin.
  • Hindi sinusuportahang modifier (XC8-2505) Hindi sinusuportahan ng avr-libc library ang * modifier sa printf-style na conversion specifiers, para sa exampang “%.*f”. Ito ay sinusuportahan na ngayon sa pagpapakilala ng Microchip Unified Standard Library.
  • Maramihang hindi nasimulang mga babala (XC8-2409) Ang compiler ay naglalabas ng maramihang magkaparehong mensahe ng babala kapag nakatagpo ng const array na hindi nasimulan. Ang mensahe ay dapat na inilabas ng isang beses lamang, na ngayon ang kaso kapag nangyari ang sitwasyong ito.

Bersyon 2.41

  • Mga isyu ng Dongle sa Ventura (XC8-3088) Ang mga Dongle na ginamit upang bigyan ng lisensya ang compiler ay maaaring hindi nabasa nang maayos sa mga host ng macOS Ventura, na nagreresulta sa mga pagkabigo sa paglilisensya. Ang mga pagbabago sa tagapamahala ng lisensya ng XCLM ay nagwawasto sa isyung ito.
  • Maling indikasyon ng memory allocation (XC8-2925) Sinusubukang maglaan ng SIZE_MAX bytes (o isang value na malapit dito) ng memory gamit ang standard na library memory management functions (malloc() et al) na hiniling kapag gumagamit ng simpleng dynamic na pagpapatupad ng memory allocation. Ibabalik na ngayon ang isang NULL pointer at itatakda ang errno sa ENOMEM sa mga ganitong sitwasyon.
  • Inalis ang mga hindi tumpak na function ng fma (XC8-2913) Ang C99 standard library fma()-family functions ( ) ay hindi nag-compute ng multiply-add na may walang katapusang katumpakan sa isang rounding, ngunit sa halip ay nag-ipon ng mga error sa rounding sa bawat operasyon. Ang mga function na ito ay inalis mula sa ibinigay na library.
  • Hindi magandang pangangasiwa ng string conversion (XC8-2921, XC8-2652) Kapag ang isang 'subject sequence' para sa conversion sa pamamagitan ng strtod() ay naglalaman ng tila isang floating-point na numero sa exponential na format at nagkaroon ng hindi inaasahang karakter pagkatapos ng e/E character, pagkatapos kung saan ibinigay ang endptr, ito ay itinalaga ng isang address na nakaturo sa character pagkatapos ng , samantalang ito ay dapat na tumuturo sa ang e//E character mismo, dahil hindi iyon na-convert. Para kay example, strtod("100exx", &ep) ay dapat magbalik ng 100.00 at itakda ang ep na tumuro sa "exx" na bahagi ng string, samantalang ang function ay nagbabalik ng tamang halaga ngunit nagtatakda ng bahaging "xx" ng string.

Bersyon 2.40

  • Masyadong relaxed (XC8-2876) Kapag ginagamit ang -mrelax na opsyon, ang compiler ay hindi naglalaan ng ilang seksyon nang magkasama, na nagreresulta sa hindi gaanong pinakamainam na laki ng code. Maaaring naganap ito gamit ang code na gumamit ng mga bagong library ng MUSL o may mahinang simbolo.
  • Ang tampok na pagmamapa ay hindi pinagana gaya ng nakasaad sa babala (XC8-2875) Ang tampok na const-data-in-config-mapped-progmem ay umaasa sa const-data-in-progmem na feature na pinagana. Kung ang tampok na const-data-in-config-mapped-progmem ay tahasang pinagana gamit ang opsyon at ang const-data-in-progmem na feature ay hindi pinagana, nabigo ang hakbang sa pag-link, sa kabila ng isang mensahe ng babala na nagsasaad na ang const-data-in Ang tampok na -config-mapped-progmem ay awtomatikong hindi pinagana, na hindi ganap na tama. Ang tampok na const-data-in-config-mapped-progmem ay ganap na hindi pinagana sa sitwasyong ito.
  • Nagbabago ang DFP upang ma-access nang tama ang NVMCTRL (XC8-2848) Ang runtime startup code na ginamit ng mga AVR64EA device ay hindi isinasaalang-alang na ang NVMCTRL register ay nasa ilalim ng Configuration Change Protection (CCP) at hindi nagawang itakda ang IO SFR sa page na ginamit. sa pamamagitan ng tampok na const-data-in-config-mapped-progmem compiler. Ang mga pagbabagong ginawa sa AVR-Ex_DFP na bersyon 2.2.55 ay magbibigay-daan sa runtime startup code na magsulat nang tama sa register na ito.
  • Nagbabago ang DFP para maiwasan ang flash mapping (XC8-2847) Naipatupad ang isang solusyon para sa isang problema sa feature ng flash-mapping device na iniulat sa AVR128DA28/32/48/64 Silicon Errata (DS80000882). Ang tampok na const-data-in-config-mapped-progmem compiler ay hindi ilalapat bilang default para sa mga apektadong device, at ang pagbabagong ito ay lalabas sa AVR-Dx_DFP na bersyon 2.2.160.
  • Gumawa ng error gamit ang sinhf o coshf (XC8-2834) Ang mga pagtatangkang gamitin ang sinhf() o coshf() na mga function ng library ay nagresulta sa isang error sa link, na naglalarawan ng hindi natukoy na sanggunian. Ang nawawalang function na isinangguni ay isinama na ngayon sa pamamahagi ng compiler.
  • Bumuo ng mga error gamit ang nopa (XC8-2833) Gamit ang katangian ng nopa na may function na tinukoy ang pangalan ng assembler gamit ang __asm__() na nag-trigger ng mga mensahe ng error mula sa assembler. Ang kumbinasyong ito ay hindi posible.
  • Variadic function failure na may pointer arguments (XC8-2755, XC8-2731) Inaasahan ng mga function na may variable na bilang ng mga argumento ang 24-bit (__memx type) pointer na maipapasa sa variable na listahan ng argument kapag ang const-data-in-progmem na feature ay pinagana. Ang mga argumento na mga pointer sa memorya ng data ay ipinapasa bilang 16-bit na mga bagay, na nagiging sanhi ng pagkabigo ng code kapag binasa ang mga ito. Kapag ang tampok na const-data-in-progmem ay pinagana, ang lahat ng 16-bit pointer argument ay na-convert na ngayon sa 24-bit pointer.
  • Nabigo ang mga function ng strtoxxx library (XC8-2620) Kapag pinagana ang tampok na const-data-in-progmem, ang parameter na endptr sa mga function ng strtoxxx library ay hindi na-update nang maayos para sa mga argumento ng source string na wala sa memorya ng program.
  • Mga alerto para sa mga di-wastong cast (XC8-2612) Maglalabas na ngayon ng error ang compiler kung ang const-in-progmem na feature ay pinagana at ang address ng string literal ay tahasang na-cast sa data address space (binaba ang const qualfiier), para sa example, (uint8_t *) “Hello World!” . Ang isang babala ay isyu kung ang address ay maaaring hindi wasto kapag ang isang const data pointer ay tahasang na-cast sa data address space.
  • Paglalagay ng hindi nasimulang const objects (XC8-2408) Uninitialized at const volatile objects const
    ay hindi inilalagay sa memorya ng programa sa mga device na nagmamapa ng lahat o bahagi ng memorya ng kanilang programa sa espasyo ng address ng data. Para sa mga device na ito, ang mga naturang bagay ay inilalagay na ngayon sa memorya ng programa, na ginagawang pare-pareho ang kanilang operasyon sa iba pang mga device.

Bersyon 2.39 (Functional Safety Release)
wala.

Bersyon 2.36
Error kapag naantala (XC8-2774) Ang mga maliliit na pagbabago sa default na Free mode optimizations ay humadlang sa patuloy na pagtiklop ng mga expression ng operand sa pagkaantala na built-in na mga function, na nagreresulta sa mga ito na itinuturing bilang mga non-constant at nagti-trigger ng error: __builtin_avr_delay_cycles ay umaasa ng isang compile time integer pare-pareho.

Bersyon 2.35

  • Ang magkadikit na alokasyon gamit ang __at (XC8-2653) Ang magkadikit na alokasyon ng maraming bagay ay naglalagay sa isang seksyon na may parehong pangalan at ang paggamit ng __at() ay hindi gumana nang tama. Para kay example:
    const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((section(“.mysec”))) = {0xEF, 0xFE}; dapat ay inilagay kaagad ang arr2 pagkatapos ng arr1
  • Pagtukoy sa mga address ng pagsisimula ng seksyon (XC8-2650) Ang -Wl,–section-start na opsyon ay tahimik na nabigong maglagay ng mga seksyon sa hinirang na panimulang address. Ang isyung ito ay naayos na para sa anumang mga seksyong pinangalanang custom; gayunpaman, hindi ito gagana para sa anumang karaniwang mga seksyon, tulad ng .text o .bss, na dapat ilagay gamit ang isang -Wl,-T na opsyon. Nag-crash ang linker kapag nagre-relax (XC8-2647) Kapag pinagana ang -mrelax optimization at may mga seksyon ng code o data na hindi nababagay sa available na memory, nag-crash ang linker. Ngayon, sa ganoong sitwasyon, ang mga mensahe ng error ang ibinibigay sa halip.
  • Walang no-falling-back (XC8-2646) Ang –nofallback na opsyon ay hindi naipatupad nang tama, ni naidokumento. Maaari na itong piliin upang matiyak na ang compiler ay hindi babalik sa isang mas mababang setting ng pag-optimize kung ang compiler ay hindi lisensyado, at sa halip ay maglalabas ng isang error.
  • Ang mga hindi naaangkop na pag-optimize ng bilis (XC8-2637) Ang mga pag-optimize ng abstraction ng pamamaraan ay pinagana kapag pumipili ng mga level 3 na pag-optimize (-O3). Binabawasan ng mga pag-optimize na ito ang laki ng code sa gastos ng bilis ng code, kaya hindi dapat ginawa.
  • Maling EEPROM access (XC8-2629) Ang eeprom_read_block routine ay hindi gumana nang tama sa Xmega device kapag ang – mconst-data-in-progmem na opsyon ay pinagana (na ang default na estado), na nagreresulta sa EEPROM memory na hindi nabasa nang tama.
  • Di-wastong paglalaan ng memorya (XC8-2593, XC8-2651) Kapag ang -Ttext o -Tdata linker na opsyon (para sa exampang ipinasa gamit ang isang -Wl driver option) ay tinukoy, ang kaukulang text/data na pinagmulan ng rehiyon ay na-update; gayunpaman, ang end address ay hindi naayos nang naaayon, na maaaring humantong sa rehiyon na lumampas sa hanay ng memorya ng target na device.
  • Pag-crash na may over-attributed na function (XC8-2580) Nag-crash ang compiler kung idineklara ang isang function gamit ang higit sa isa sa mga katangian ng interrupt, signal o nmi, hal, __attribute__((__signal__, __interrupt__)).
  • Di-wastong ATtiny interrupt code (XC8-2465) Kapag ang pagbuo para sa mga ATtiny device at ang mga optimization ay hindi pinagana (-O0), ang interrupt function ay maaaring nag-trigger ng operand sa labas ng saklaw
  • Mga opsyon na hindi ipinapasa (XC8-2452) Kapag ginagamit ang -Wl na opsyon na may maramihang, pinaghihiwalay ng kuwit na mga opsyon sa linker, hindi lahat ng mga opsyon sa linker ay ipinapasa sa linker.
  • Error sa hindi direktang pagbabasa ng memorya ng program (XC8-2450) Sa ilang pagkakataon, gumawa ang compiler ng panloob na error (unrecognizable insn ) kapag nagbabasa ng dalawang byte na halaga mula sa isang pointer patungo sa memorya ng program.

Bersyon 2.32
Nabigo ang pangalawang pag-access ng library (XC8-2381) Ang pag-invoke sa bersyon ng Windows ng xc8-ar.exe library archiver sa pangalawang pagkakataon upang ma-access ang isang umiiral na archive ng library ay maaaring nabigo nang hindi napalitan ang pangalan ng mensahe ng error.

Bersyon 2.31
Hindi maipaliwanag na mga pagkabigo ng compiler (XC8-2367) Kapag tumatakbo sa mga platform ng Windows na may pansamantalang direktoryo ng system na nakatakda sa isang landas na may kasamang tuldok na '.' character, maaaring nabigo ang compiler na maisagawa.

Bersyon 2.30

  • Ang mga pandaigdigang label ay nailagay sa ibang lugar pagkatapos ng outlining (XC8-2299) Hand-written assembly code na naglalagay ng mga global na label sa loob ng mga sequence ng assembly na na-factor out ng procedural abstraction ay maaaring hindi na-reposition nang tama.
  • Isang nakakarelaks na pag-crash (XC8-2287) Ang paggamit ng -mrelax na opsyon ay maaaring naging sanhi ng pag-crash ng linker kapag sinubukan ng mga tail jump relaxation optimization na alisin ang ret instruction na wala sa dulo ng isang seksyon.
  • Ang pag-crash kapag nag-o-optimize ng mga label bilang mga value (XC8-2282) Code na gumagamit ng "Mga Label bilang mga value" na extension ng wika ng GNU C ay maaaring naging sanhi ng pag-crash ng mga pamamaraan ng abstraction optimization, na may error sa pagsasaayos ng saklaw ng saklaw.
  • Hindi kaya const (XC8-2271) Ang mga prototype para sa strstr() at iba pang mga function mula sa hindi na tukuyin ang hindi karaniwang kwalipikasyon sa mga ibinalik na string pointer kapag ang tampok na const -mconst-data-in-progmem ay hindi pinagana. Tandaan na sa mga avrxmega3 at avrtiny device, permanenteng pinagana ang feature na ito.
  • Nawalang mga initializer (XC8-2269) Kapag higit sa isang variable sa isang unit ng pagsasalin ang inilagay sa isang seksyon (gamit ang __section o __attribute__((section)) ), at ang unang variable ay zero initialized o walang initializer, ang mga initializer para sa nawala ang iba pang mga variable sa parehong unit ng pagsasalin na inilagay sa parehong seksyon.

Bersyon 2.29 (Functional Safety Release)
wala.

Bersyon 2.20

  • Error sa mahabang command (XC8-1983) Kapag gumagamit ng target ng AVR, maaaring tumigil ang compiler na may file not found error, kung ang command line ay napakalaki at naglalaman ng mga espesyal na character tulad ng mga quote, backslashes, atbp.
  • Hindi nakatalagang seksyon ng rodata (XC8-1920) Nabigo ang linker ng AVR na magtalaga ng memory para sa mga custom na seksyon ng rodata kapag gumagawa para sa avrxmega3 at avrtiny na mga arkitektura, na posibleng magdulot ng mga error sa overlap ng memory

Bersyon 2.19 (Functional Safety Release)
wala.

Bersyon 2.10

  • Mga pagkabigo sa relokasyon (XC8-1891) Ang pinakamahusay na angkop na tagapaglaan ay ang pag-iiwan ng 'mga butas' ng memorya sa pagitan ng mga seksyon pagkatapos ng pagpapahinga ng linker. Bukod sa fragmenting memory, pinataas nito ang posibilidad na magkaroon ng linker relocation failures na may kaugnayan sa pc-relative jumps o mga tawag na wala sa saklaw.
  • Mga tagubiling hindi binago sa pamamagitan ng pagpapahinga (XC8-1889) Ang pagrerelaks ng linker ay hindi naganap para sa mga tagubilin sa pagtalon o tawag na ang mga target ay naaabot kung nakakarelaks.
  • Nawawala functionality (XC8E-388) Ilang depinisyon mula sa , gaya ng clock_div_t at clock_prescale_set() , ay hindi tinukoy para sa mga device, kabilang ang ATmega324PB, ATmega328PB, ATtiny441, at ATtiny841.
  • Mga nawawalang macro Ang preprocessor macros _XC8_MODE_, __XC8_VERSION, __XC , at __XC8 ay awtomatikong tinukoy ng compiler. Available na ang mga ito.

Bersyon 2.05

  • Error sa panloob na compiler (XC8-1822) Kapag gumagawa sa ilalim ng Windows, maaaring may nagawang internal na error sa compiler kapag nag-optimize ng code.
  • Hindi na-detect ang overflow ng RAM (XC8-1800, XC8-1796) Ang mga program na lumampas sa available na RAM ay hindi na-detect ng compiler sa ilang sitwasyon, na nagreresulta sa isang runtime code failure.
  • Inalis ang flash memory (XC8-1792) Para sa mga avrxmega3 at avrtiny device, ang mga bahagi ng flash memory ay maaaring naiwang hindi na-program ng MPLAB X IDE.
  • Pagkabigong isagawa ang pangunahing (XC8-1788) Sa ilang mga sitwasyon kung saan ang programa ay walang mga global variable na tinukoy, ang runtime startup code ay hindi lumabas at ang main() function ay hindi kailanman naabot.
  • Maling impormasyon sa memorya (XC8-1787) Para sa mga avrxmega3 at avrtiny device, ang avr-size na program ay nag-uulat na ang read-only na data ay kumokonsumo ng RAM sa halip na memorya ng programa.
  • Maling nabasa ng memorya ng program (XC8-1783) Mga proyektong pinagsama-sama para sa mga device na may memorya ng program na nakamapa sa espasyo ng address ng data at maaaring nabasa ng mga object gamit ang macro/attribute ng PROGMEM ang mga object na ito mula sa maling address.
  • Panloob na error na may mga katangian (XC8-1773) Isang panloob na error ang naganap kung tinukoy mo ang mga pointer object na may __at() o attribute() na mga token sa pagitan ng pangalan ng pointer at dereference na uri, para sa example, char * __at(0x800150) cp; Ang isang babala ay ibinibigay na ngayon kung ang naturang code ay nakatagpo.
  • Ang pagkabigong isagawa ang pangunahing (XC8-1780, XC8-1767, XC8-1754) Ang paggamit ng mga variable ng EEPROM o pagtukoy ng mga fuse gamit ang config pragma ay maaaring nagdulot ng maling pagsisimula ng data at/o naka-lock na pagpapatupad ng program sa runtime startup code, bago maabot ang main( ).
  • Error sa fuse na may maliliit na device (XC8-1778, XC8-1742) Ang attiny4/5/9/10/20/40 device ay may maling haba ng fuse na tinukoy sa kanilang mga header file na humahantong sa mga error sa linker kapag sinusubukang bumuo ng code na tumukoy sa mga fuse .
  • Segmentation fault (XC8-1777) Ang isang paulit-ulit na segmentation fault ay naitama.
  • Assembler crash (XC8-1761) Ang avr-as assembler ay maaaring nag-crash noong ang compiler ay pinatakbo sa ilalim ng Ubuntu 18.
  • Hindi na-clear ang mga bagay (XC8-1752) Maaaring hindi na-clear ng runtime startup code ang mga bagay na hindi na-initialize na tagal ng imbakan.
  • Hindi pinansin ang magkasalungat na detalye ng device (XC8-1749) Ang compiler ay hindi gumagawa ng error kapag ginamit ang maraming opsyon sa pagtukoy ng device at nagpahiwatig ng iba't ibang mga device.
  • Memory corruption by heap (XC8-1748) Ang __heap_start na simbolo ay hindi naitakda nang tama, na nagreresulta sa posibilidad ng mga ordinaryong variable na ma-corrupt ng heap.
  • Error sa paglipat ng linker (XC8-1739) Maaaring lumabas ang isang error sa paglipat ng linker kapag naglalaman ang code ng rjmp o rcall na may target na eksaktong 4k bytes ang layo.

Bersyon 2.00
wala.

Mga Kilalang Isyu

Ang mga sumusunod ay mga limitasyon sa pagpapatakbo ng compiler. Ang mga ito ay maaaring pangkalahatang mga paghihigpit sa coding, o mga paglihis mula sa impormasyong nilalaman sa manwal ng gumagamit. Ang (mga) naka-bracket na label sa pamagat ay ang pagkakakilanlan ng isyu sa database ng pagsubaybay. Ito ay maaaring maging kapaki-pakinabang kung kailangan mong makipag-ugnayan sa suporta. Ang mga item na walang mga label ay mga limitasyon na naglalarawan ng modi operandi at malamang na mananatiling may bisa nang permanente.

Pagsasama ng MPLAB X IDE

  • Pagsasama ng MPLAB IDE Kung ang Compiler ay gagamitin mula sa MPLAB IDE, dapat mong i-install ang MPLAB IDE bago ang pag-install ng Compiler.
  • Array debug information (XC8-3157) Ang impormasyon sa pag-debug na ginawa ng compiler ay hindi tumpak na naghahatid ng uri ng object para sa mga array sa __memx address space. Pipigilan nito ang pagmamasid sa bagay sa isang IDE.

Pagbuo ng Code

  • Segfault na may opsyong section-anchors (XC8-3045) Programa na tumukoy ng mga function na may mga variable na listahan ng argumento at gumagamit ng opsyon na -fsection-anchors ay maaaring nag-trigger ng internal na error sa compiler: Segmentation fault
  • Hindi naka-sync ang impormasyon sa pag-debug (XC8-2948) Kapag ang mga pag-optimize ng relaxation ng linker ay lumiit sa mga tagubilin (para sa example call to rcall instructions), maaaring hindi manatiling naka-sync ang source line para matugunan ang mga pagmamapa kapag mayroong higit sa isang pagpapaliit na operasyon na nagaganap sa isang seksyon. Sa ibabang exampOo, may dalawang tawag sa foo na nagtatapos sa mga kamag-anak na tawag.
  • PA memory allocation failure (XC8-2881) Kapag gumagamit ng procedural abstraction optimizer, maaaring mag-ulat ang linker ng mga error sa paglalaan ng memory kapag ang laki ng code ay malapit sa dami ng available na memory ng program sa device, kahit na ang program ay dapat na magkasya sa available. espasyo.
  • Hindi gaanong matalinong Smart-IO (XC8-2872) Ang tampok na smart-io ng compiler ay bubuo ng wasto ngunit sub-optimal na code para sa snprintf function kung ang const-data-in-progmem na feature ay hindi pinagana o kung ang device ay mayroon ng lahat nito. na-map ang flash sa memorya ng data.
  • Kahit na hindi gaanong matalinong Smart-IO (XC8-2869) Ang tampok na smart-io ng compiler ay bubuo ng wasto ngunit sub-optimal na code kapag ang -flto at -fno-builtin na mga opsyon ay parehong ginamit.
  • Suboptimal read-only na placement ng data (XC8-2849) Kasalukuyang hindi alam ng linker ang mga seksyon ng memorya ng APPCODE at APPDATA, o ang mga dibisyon ng [No-]Read-While-Write sa memory map. Bilang resulta, may maliit na pagkakataon na ang linker ay maaaring maglaan ng read-only na data sa isang hindi angkop na lugar ng memorya. Ang posibilidad ng maling lokasyon ng data ay tumataas kung ang tampok na const-data-in-progmem ay pinagana, lalo na kung ang tampok na const-data-in-config-mapped-progmem ay pinagana rin. Maaaring i-disable ang mga feature na ito kung kinakailangan.
  • Object file processing order (XC8-2863) Ang pagkakasunud-sunod kung saan ang mga object file ay ipoproseso ng linker ay maaaring mag-iba batay sa paggamit ng mga pamamaraan ng abstraction optimizations (-mpa na opsyon). Maaapektuhan lamang nito ang code na tumutukoy sa mga mahihinang function sa maraming module.
  • Error sa linker na may absolute (XC8-2777) Kapag ang isang object ay ginawang absolute sa isang address sa simula ng RAM at natukoy din ang mga hindi nasimulang object, maaaring ma-trigger ang isang linker error.
  • Mga maiikling wake-up ID (XC8-2775) Para sa mga ATA5700/2 na device, ang mga rehistro ng PHID0/1 ay tinutukoy lamang bilang 16 bits ang lapad, sa halip na 32 bits ang lapad.
  • Linker crash kapag tumatawag sa simbolo (XC8-2758) Ang linker ay maaaring mag-crash kung ang -mrelax driver na opsyon ay ginagamit kapag ang source code ay tumawag sa isang simbolo na tinukoy gamit ang – Wl,–defsym linker na opsyon.
  • Maling pagsisimula (XC8-2679) Mayroong pagkakaiba sa pagitan ng kung saan inilalagay ang mga paunang halaga para sa ilang global/static na laki ng byte sa memorya ng data at kung saan maa-access ang mga variable sa runtime.
  • Hindi tuwirang mga tawag sa pag-andar (XC8-2628) Sa ilang pagkakataon, maaaring mabigo ang mga function na tawag na ginawa sa pamamagitan ng isang function pointer na nakaimbak bilang bahagi ng isang istraktura.
  • Ang strtof ay nagbabalik ng zero para sa hexadecimal oats (XC8-2626) Ang library function na strtof() et al at scanf() et al, ay palaging magko-convert ng hexadecimal na floating-point na numero na hindi tumutukoy ng exponent sa zero. Para kay example: strtof(“0x1”, &endptr); ibabalik ang halaga na 0, hindi 1.
  • Hindi tumpak na stack advisor messaging (XC8-2542, XC8-2541) Sa ilang pagkakataon, ang stack advisor na babala tungkol sa recursion o indeterminate stack na ginamit (maaaring sa pamamagitan ng paggamit ng alloca()) ay hindi inilalabas.
  • Pagkabigo sa duplicate na interrupt code (XC8-2421) Kung saan higit sa isang interrupt function ang may parehong katawan, ang compiler ay maaaring magkaroon ng output para sa isang interrupt function na tumawag sa isa. Magreresulta ito sa lahat ng call-clobbered na rehistro na mase-save nang hindi kinakailangan, at ang mga interrupt ay paganahin bago pa man tumakbo ang epilogue ng kasalukuyang interrupt handler, na maaaring humantong sa code failure.
  • Masamang output na may di-wastong DFP path (XC8-2376) Kung ang compiler ay na-invoke na may di-wastong DFP path at mayroong 'spec' file para sa napiling device, hindi iniuulat ng compiler ang nawawalang device family pack at sa halip ay pinipili ang 'spec' file, na maaaring humantong sa isang di-wastong output. Ang mga 'spec' file ay maaaring hindi napapanahon sa mga ipinamahagi na DFP at nilayon para sa paggamit sa panloob na pagsubok ng compiler lamang.
  • Memory overlap undetected (XC8-1966) Hindi nade-detect ng compiler ang memory overlap ng mga object na ginawang absolute sa isang address (sa pamamagitan ng __at()) at iba pang object gamit ang __section() specifier at naka-link sa parehong address.
  • Ang pagkabigo sa mga function ng library at __memx (XC8-1763) Tinatawag na libgcc at function na may argumento sa __memx address space ay maaaring mabigo. Tandaan na ang mga gawain sa library ay tinatawag mula sa ilang C operator, kaya, para sa halample, ang sumusunod na code ay apektado: return regFloatVar > memxFloatVar;
  • Limitadong pagpapatupad ng libgcc (AVRTC-731) Para sa mga produktong ATTiny4/5/9/10/20/40, ang karaniwang pagpapatupad ng C / Math library sa libgcc ay napakalimitado o wala.
  • Mga limitasyon sa memorya ng programa (AVRTC-732) Ang mga imahe ng memorya ng program na higit sa 128 kb ay sinusuportahan ng toolchain; gayunpaman, may mga kilalang pagkakataon ng pag-abort ng linker nang walang pagpapahinga at walang kapaki-pakinabang na mensahe ng error kaysa sa pagbuo ng mga kinakailangang function stub kapag ginamit ang opsyong -mrelax.
  • Mga limitasyon sa espasyo ng pangalan (AVRTC-733) Ang mga pinangalanang puwang ng address ay sinusuportahan ng toolchain, napapailalim sa mga limitasyon na binanggit sa seksyon ng gabay ng gumagamit Mga Espesyal na Uri ng Kwalipikasyon.
  • Mga time zone Ang ipinapalagay ng mga function ng library ang GMT at hindi sinusuportahan ang mga lokal na time zone, kaya ang localtime() ay babalik sa parehong oras gaya ng gmtime() , para sa example.

Mga Dokumento / Mga Mapagkukunan

MICROCHIP XC8 C Compiler Version 2.45 Release Notes para sa AVR MCU [pdf] Mga tagubilin
AVR MCU, XC8 C, XC8 C Compiler Version 2.45 Release Notes para sa AVR MCU, Compiler Version 2.45 Release Notes para sa AVR MCU, Version 2.45 Release Notes para sa AVR MCU, Release Notes para sa AVR MCU, Notes para sa AVR MCU, AVR MCU

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *