MICROCHIP-LOGO

MICROCHIP XC8 C Compiler Version 2.45 AVR MCU үчүн релиз эскертүүлөрү

MICROCHIP-XC8-C-Compiler-Version-2-45-AVR-MCU-PRO үчүн-релиз-эскертмелер

Продукт маалыматы

MPLAB XC8 C Compiler Microchip AVR түзмөктөрүн максаттуу үчүн колдонулган программалык курал болуп саналат. Ал C кодун компиляциялоо жана аткарылуучу файлды түзүү үчүн иштелип чыккан fileбул түзмөктөр үчүн. Бул колдонуучу нускамада айтылган компилятордун версиясы - 2.45, анын расмий түзүлгөн күнү 18-жылдын 2023-августунда. Мурунку версия 2.41, 8-жылдын 2023-февралында курулган. Компилятор кошумча маалыматты камтыган Функционалдык коопсуздук колдонмосу менен келет. жана MPLAB XC компиляторлорун функционалдык коопсуздук тиркемелери менен колдонууда көрсөтмөлөр. Бул колдонмо сиз функционалдык коопсуздук лицензиясын сатып алганыңызда документтер пакетине кошулат. MPLAB XC8 C компилятору релиз учурунда бардык жеткиликтүү 8-бит AVR MCU түзмөктөрүн колдойт. Сиз avr_chipinfo.html шилтемесин көрсөңүз болот file бардык колдоого алынган түзмөктөрдүн тизмеси жана алардын конфигурациясынын бит орнотуулары үчүн компилятордун doc каталогунда. MPLAB XC8 компиляторунун ар кандай басылмалары бар. Лицензияланган (PRO) чыгарылыш акысыз нускага салыштырмалуу оптималдаштыруунун жогорку деңгээлин камсыз кылат. Лицензияланган продукт катары компиляторду активдештирүү үчүн сиз активдештирүү ачкычын сатып алышыңыз керек. Бирок, лицензияланбаган версия лицензиясыз чексиз колдонулушу мүмкүн. Функционалдык коопсуздук колдонмолору үчүн MPLAB XC8 Functional Safety компилятору бар. Ал жандыруу үчүн Microchip'тен сатып алынган функционалдык коопсуздук лицензиясын талап кылат. Иштетилгенден кийин, бардык оптималдаштыруу деңгээли жана компилятордун функцияларын колдонсо болот. MPLAB XC Functional Safety Compiler, ошондой эле Network Server License колдойт. Орнотуу, активдештирүү, лицензиянын түрлөрү жана миграция маселелери жөнүндө толук маалыматты MPLAB XC C Compilers (DS50002059) документинен тапса болот.

Продукт колдонуу нускамалары

  1. MPLAB XC8 C Compiler программасын иштетүүдөн мурун, Microchip AVR түзмөктөрүнө багытталган маанилүү маалымат жана нускамаларды алуу үчүн колдонуучу колдонмосун окуп чыгыңыз.
  2. Эгерде сиз компиляторду 8 биттик PIC түзмөктөрү үчүн колдонуп жатсаңыз, PIC документи үчүн MPLAB XC8 C Compiler Release Notes караңыз.
  3. Иштетүү системаңыз компиляторду иштетүү үчүн системанын талаптарына жооп берерин текшериңиз. MacOS үчүн экилик коддуу кол коюлган жана нотариалдык жактан күбөлөндүрүлгөн. MPLAB XC Network License Server Microsoft Windows 10 жана андан жогору, Ubuntu 18.04 жана андан жогору, жана macOS 10.15 жана андан жогору үчүн жеткиликтүү. MPLAB XC Network License Server бул операциялык системаларда сыналбаганын эске алыңыз.
  4. MPLAB XC Network License Server тармак лицензиялары (SW006021-VM) үчүн виртуалдык машина лицензиясын колдонуу менен колдоого алынган OSтин Виртуалдык машиналарында иштетилиши мүмкүн. MPLAB XC Network Server бардык 32-бит версиялары 3.00 версиясынан баштап токтотулат.
  5. MPLAB XC8 C компиляторун лицензияланган (PRO) продукт катары иштетүү үчүн активдештирүү ачкычын сатып алыңыз. Бул акысыз версияга салыштырмалуу оптималдаштыруунун жогорку деңгээлин камсыз кылат. Бирок, лицензиясы жок компилятор лицензиясыз чексиз иштей алат.
  6. Эгерде сиз MPLAB XC8 Функционалдык коопсуздук компиляторун функционалдык коопсуздук колдонмолору үчүн колдонуп жатсаңыз, ал Microchipден сатып алынган функционалдык коопсуздук лицензиясы менен иштетилиши керек. Бул лицензиясыз компилятор иштебейт. Иштетилгенден кийин, сиз каалаган оптималдаштыруу деңгээлин тандап, компилятордун бардык мүмкүнчүлүктөрүн колдоно аласыз. Network Server License MPLAB XC Functional Safety Compiler бул чыгарылышында колдоого алынат.
  7. MPLAB XC8 C Compiler орнотуу, активдештирүү жана лицензиялоо боюнча кеңири нускамаларды алуу үчүн MPLAB XC C Compilers (DS50002059) орнотуу жана лицензиялоо документине кайрылыңыз.
  8. Эгерде сиз компиляторду баалоо лицензиясы боюнча иштетип жатсаңыз, баалоо мөөнөтү аяктагандан кийин 14 күндүн ичинде сиз компиляция учурунда эскертүү аласыз. Эгер сиз HPA жазылууңуз аяктагандан кийин 14 күндүн ичинде болсоңуз, ошол эле эскертүү берилет.

Бүттүview

Introduction
Microchip MPLAB® XC8 C компиляторунун бул чыгарылышы бир нече жаңы функцияларды, мүчүлүштүктөрдү оңдоолорду жана жаңы түзмөктөрдү колдоону камтыйт.

Курулуш датасы
Бул компилятор версиясынын расмий түзүлгөн күнү 18-жылдын 2023-августу.

Мурунку версия
Мурунку MPLAB XC8 C компилятор версиясы 2.41, 8-жылдын 2023-февралында курулган.

Функционалдык коопсуздук боюнча колдонмо
MPLAB XC компиляторлору үчүн Функционалдык коопсуздук боюнча колдонмо сиз функционалдык коопсуздук лицензиясын сатып алганыңызда документтер пакетинде жеткиликтүү.

Компоненттик лицензиялар жана версиялар
AVR MCUs куралдары үчүн MPLAB XC8 C Compiler GNU General Public License (GPL) астында жазылган жана таратылган, бул анын баштапкы коду эркин таратылып, коомчулукка жеткиликтүү дегенди билдирет. GNU GPL астындагы куралдардын баштапкы кодун Microchip'тен өзүнчө жүктөп алса болот webсайт. GNU GPLди окуй аласыз file аттуу сиздин орнотуу каталогуңуздун подкаталогунда жайгашкан. GPLдин негизин түзгөн принциптердин жалпы талкуусун бул жерден тапса болот. Колдоо коду баш үчүн берилген files, шилтеме берүүчү скрипттер жана иштөө убагы китепканалары проприетардык код жана GPL астында камтылбайт. Бул компилятор GCC 5.4.0 версиясынын, binutils 2.26 версиясынын ишке ашырылышы жана avr-libc 2.0.0 версиясын колдонот.

Системалык талаптар
MPLAB XC8 C компилятору жана ал колдонгон лицензиялоочу программалык камсыздоо ар кандай операциялык системалар үчүн жеткиликтүү, анын ичинде төмөнкүлөрдүн 64 биттик версиялары: Microsoft® Windows® 10, Ubuntu® 18.04, macOS® 13.2 (Ventura) жана Fedora 34. Windows үчүн экилик коддуу кол коюлган. MacOS үчүн экилик коддуу кол коюлган жана нотариалдык жактан күбөлөндүрүлгөн. MPLAB XC Network License Server ар кандай 64-бит операциялык системалар үчүн жеткиликтүү, анын ичинде Microsoft Windows 10 жана андан жогору; Ubuntu 18.04 жана андан жогору; же macOS 10.15 жана андан жогору. Сервер ошондой эле Windows Server, Linux дистрибуцияларында, мисалы, Oracle® Enterprise Linux® жана Red Hat® Enterprise Linux, ошондой эле колдоого алынган операциялык системалардын эски версияларында иштей алат. Бирок, MPLAB XC Network License Server бул операциялык системаларда сыналган эмес. MPLAB XC Network License Server тармак лицензиялары (SW006021-VM) үчүн виртуалдык машина лицензиясын колдонуу менен колдоого алынган OSтин Виртуалдык машиналарында иштетилиши мүмкүн. MPLAB XC Network Server бардык 32-бит версиялары 3.00 версиясынан баштап токтотулат.

Колдоого алынган түзмөктөр
Бул компилятор релиз учурунда бардык жеткиликтүү 8-бит AVR MCU түзмөктөрүн колдойт. Бардык колдоого алынган түзмөктөрдүн тизмесин көрүү үчүн avr_chipinfo.html (компилятордун документ каталогунда) караңыз. Бул файлдар ошондой эле ар бир түзмөк үчүн конфигурация бит орнотууларын тизмелейт.

Басылмалар жана лицензияны жаңыртуу
MPLAB XC8 компилятору лицензияланган (PRO) же лицензияланбаган (акысыз) продукт катары жандырылышы мүмкүн. Сиз компиляторду лицензиялоо үчүн активдештирүү ачкычын сатып алышыңыз керек. Лицензия Акысыз продуктка салыштырмалуу жогорку деңгээлдеги оптималдаштырууга мүмкүндүк берет. Лицензиясыз компилятор лицензиясыз чексиз иштетилет. MPLAB XC8 Functional Safety компилятору Microchipден сатылып алынган функционалдык коопсуздук лицензиясы менен иштетилиши керек. Бул лицензиясыз компилятор иштебейт. Иштетилгенден кийин, сиз каалаган оптималдаштыруу деңгээлин тандап, компилятордун бардык мүмкүнчүлүктөрүн колдоно аласыз. MPLAB XC Functional Safety Compiler бул релиз Network Server License колдойт. Лицензия түрлөрү жана компиляторду лицензия менен орнотуу жөнүндө маалымат алуу үчүн MPLAB XC C Compilers (DS50002059) документин орнотуу жана лицензиялоону караңыз.

Орнотуу жана активдештирүү
Ошондой эле бул компиляторго камтылган акыркы лицензия менеджери жөнүндө маанилүү маалымат алуу үчүн Миграция маселелери жана чектөөлөр бөлүмдөрүн караңыз. MPLAB IDE колдонсоңуз, бул куралды орнотуудан мурун эң акыркы MPLAB X IDE 5.0 же андан кийинки версиясын орнотуңуз. Компиляторду орнотуудан мурун IDEден чыкыңыз. .run (Linux) же .app (macOS) компилятор орнотуучу тиркемесин иштетиңиз, мисалы, XC8-1.00.11403-windows.exe жана экрандагы көрсөтмөлөрдү аткарыңыз. Демейки орнотуу каталогу сунушталат. Эгер сиз Linux колдонуп жатсаңыз, компиляторду терминал аркылуу жана түпкү каттоо эсебинен орнотуу керек. Администратор артыкчылыктары бар macOS каттоо эсеби аркылуу орнотуңуз. Иштетүү азыр орнотуу үчүн өзүнчө жүргүзүлөт. Көбүрөөк маалымат алуу үчүн MPLAB® XC C Compilers (DS52059) үчүн License Manager документин караңыз. Эгерде сиз компиляторду баалоо лицензиясынын алкагында иштетүүнү тандасаңыз, баалоо мезгили аяктагандан кийин 14 күндүн ичинде сиз компиляция учурунда эскертүү аласыз. Эгер сиз HPA жазылууңуз аяктагандан кийин 14 күндүн ичинде болсоңуз, ошол эле эскертүү берилет. XC Network License Server өзүнчө орнотуучу жана бир колдонуучу компиляторду орнотуучуга кирбейт. XC License Manager азыр калкыма тармак лицензияларынын роумингин колдойт. Мобилдик колдонуучуларга багытталган бул функция калкып жүрүүчү лицензияга тармактан кыска убакытка чыгууга мүмкүндүк берет. Бул функцияны колдонуу менен, сиз тармактан ажыратып, дагы эле MPLAB XC компиляторду колдоно аласыз. Бул функция тууралуу көбүрөөк билүү үчүн XCLM орнотуусунун документ папкасын караңыз. MPLAB X IDE роумингди визуалдык башкаруу үчүн Лицензиялар терезесин (Куралдар > Лицензиялар) камтыйт.

Орнотуу маселелерин чечүү
Эгерде сиз Windows операциялык системаларынын кайсынысы болбосун компиляторду орнотууда кыйынчылыктарга туш болсоңуз, төмөнкү сунуштарды колдонуп көрүңүз.

  • Орнотууну администратор катары иштетиңиз.
  • Орнотуучу колдонмонун уруксаттарын "Толук башкарууга" коюңуз. (Файлды оң баскыч менен чыкылдатыңыз, "Касиеттер", "Коопсуздук" өтмөгү, колдонуучуну тандаңыз, түзөтүңүз.)
  • Убактылуу папкага уруксаттарды "Толук башкарууга" коюңуз.

Убактылуу папканын жайгашкан жерин аныктоо үчүн Run буйругуна %temp% териңиз (Windows логотип баскычы + R). Бул ошол каталогду көрсөткөн файл изилдөөчүнүн диалогун ачат жана ал папканын жолун аныктоого мүмкүндүк берет.

Compiler Documentation
Скриншотто көрсөтүлгөндөй, MPLAB X IDE панелиндеги көк жардам баскычын басканда, компилятордун колдонуучу колдонмолорун браузериңизде ачылуучу HTML барагынан ачууга болот.MICROCHIP-XC8-C-Compiler-Version-2-45-AVR-MCU-1 үчүн-релиз-эскертмелер

Эгер сиз 8 биттик AVR максаттары үчүн куруп жатсаңыз, AVR® MCU үчүн MPLAB® XC8 C Compiler Колдонуучунун колдонмосунда ушул архитектурага тиешелүү компилятордун параметрлери жана функциялары жөнүндө маалымат камтылган.

Кардарларды колдоо
Сиз XC8 форумунда ушул буюмдун башка колдонуучуларына суроолорду бере аласыз. Микрочип бул компилятордун версиясына байланыштуу мүчүлүштүктөрдүн отчетторун, сунуштарын же комментарийлерин кабыл алат. Колдоо системасы аркылуу мүчүлүштүктөр тууралуу кабарларды же функция сурамдарын багыттаңыз.

Документация жаңыртуулары

MPLAB XC8 документациясынын онлайн жана заманбап версиялары үчүн Microchipтин онлайн техникалык документациясына кириңиз. webсайт.
Бул чыгарылыштагы жаңы же жаңыртылган AVR документтери:

Жок

  • AVR® GNU Toolchain to MPLAB® XC8 Migration Guide булак кодуна өзгөртүүлөрдү жана сиз C негизиндеги долбоорду AVR 8-бит GNU Toolchain'ден Microchip MPLAB XC8 C Compiler'ге көчүрүүнү чечкенде талап кылынышы мүмкүн болгон куруу параметрлерин сүрөттөйт.
  • Microchip Unified Standard Library Reference Guide микрочиптин бирдиктүү стандарттык китепканасы тарабынан аныкталган функциялардын жүрүм-турумун жана интерфейсин, ошондой эле китепкана түрлөрүн жана макросторду максаттуу пайдаланууну сүрөттөйт. Бул маалыматтын айрымдары мурда AVR® MCU үчүн MPLAB® XC8 C Compiler Колдонуучунун колдонмосунда камтылган. Түзмөккө тиешелүү китепкана маалыматы дагы эле бул компилятор колдонмосунда камтылган.
  • Эгер сиз 8 биттик түзүлүштөрдү жана MPLAB XC8 C Compiler менен жаңыдан иштеп жатсаңыз, MPLAB® XC8 Колдонуучусунун
  • Камтылган инженерлер үчүн колдонмо – AVR® MCUs (DS50003108) MPLAB X IDEде долбоорлорду орнотуу жана биринчи MPLAB XC8 C долбооруңуз үчүн код жазуу боюнча маалыматка ээ. Бул колдонмо азыр компилятор менен бөлүштүрүлөт.
  • Hexmate Колдонуучунун колдонмосу Hexmate өз алдынча тиркеме катары иштеткендер үчүн арналган.

Эмне жаңылык

Төмөндө компилятор азыр колдогон жаңы AVR максаттуу өзгөчөлүктөрү бар. Почтачалардагы версия номери кийинки функцияларды колдоо үчүн компилятордун биринчи версиясын көрсөтөт.

Версия 2.45
Универсалдуу лицензия менеджери (XC8-3175, XCLM-224) Лицензия башкаргычтын компилятор менен колдонулган macOS версиясы азыр универсалдуу болуп, Intel жана M1 негизиндеги машиналар үчүн жергиликтүү колдоону сунуштайт. Лицензия башкаргычтын Linux версиясы азыр жок дегенде glibc 2.25 версиясын талап кылат. Mac универсалдуу экилик файлдары (XC8-3168, XC8-2951) MacOS үчүн компилятордук бинардык файлдар азыр универсалдуу болуп, Intel жана M1 негизиндеги машиналар үчүн жергиликтүү колдоону сунуштайт. Кыскартылган калкыма чекит китепканасынын өлчөмдөрү (XC8-3112, XC8-3071) Floating чекиттүү китепкана функцияларына, анын ичинде sin() pow(), sqrt(), expf(), log1fp() жана nextafterf() жакшыртылды. , бул процедуралар үчүн коддун өлчөмүн азайтууну көрүшөт. Жаңы түзмөктү колдоо азыр төмөнкү AVR бөлүктөрүндө жеткиликтүү: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16EB28 жана AVR16EB32.

Версия 2.41

  • Bootrow колдоосу (XC8-3053) Компилятор HEX файлында 0x860000 дарегинде .bootrow префикси бар бардык бөлүмдөрдүн мазмунун жайгаштырат. Бул бөлүмдөр жүктөгүч үчүн гана жеткиликтүү болгон ачкычтарды жана башка коопсуз маалыматты сактоо үчүн иштелип чыккан BOOTROW эс тутуму үчүн колдонулат.
  • Артыкча кайтарууну жоюу (XC8-3048) Эми компилятор ыңгайлаштырылган шилтеме скрипттери колдонулганда, арткы секирүү менен функциялардагы ашыкча рет нускамаларды жок кылат. Бул мурда аткарылганга окшош оптималдаштыруу, бирок ал азыр бардык жетим бөлүмдөрдө аткарылат, жада калса ыңгайлаштырылган шилтеме скрипти колдонулуп, эң жакшы бөлүштүрүү схемасы ойнотулбаса да.
  • Убакыттын түрүн өзгөртүү (XC8-2982, 2932) C99 стандарттык китепкана түрү time_t узун узун түрдөн кол коюлбаган узун түргө өзгөртүлдү, бул mktime() сыяктуу кээ бир убакытка байланыштуу функцияларда код өлчөмүн жакшыртууну берет.
  • Жаңы ноп (XC8-2946, 2945) макро NOP() кошулду . Бул макрос чыгарууга эч кандай операция жок нускамасын киргизет.
  • XCLMге жаңыртуу (XC8-2944) Компилятор менен колдонулган лицензия менеджери жаңыртылган жана азыр компилятордун лицензиясынын чоо-жайын текшерүүдө көбүрөөк жооп берет.
  • Trampлинияланган чалуулар (XC8-2760) Эми компилятор узун формадагы чакыруу инструкцияларын кыскараак салыштырмалуу чалуулар менен алмаштырууну аткара алат, эгерде инструкциялардын салыштырмалуу формалары адатта алардын көздөгөн диапазонунун чегинен тышкары болсо. Бул жагдайда, компилятор rcall инструкциясы менен jmp чакыруу инструкциясына алмаштырууга аракет кылат, ал "tr"ampталап кылынган дарекке oline' аткарылышы, мисалыampле:

Версия 2.40

  • Жаңы түзмөктү колдоо азыр төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32EA64, AVR28, AVR64, AVR32, AVR64, AVR48EAXNUMX.
  • Жакшыртылган процедуралык абстракция Процедуралык абстракцияны (ПБ) оптималдаштыруу инструменти жакшыртылган, ошондуктан функцияны чакыруу инструкциясын камтыган кодду (чалуу/чалуу) конструкциялоого болот. Бул стек аргументтерди өткөрүү жана функциядан кайтаруу маанисин алуу үчүн колдонулбаса гана болот. Стек өзгөрмөлүү аргументтердин тизмеси бар функцияны чакырганда же бул максат үчүн дайындалган регистрлерден көбүрөөк аргумент алган функцияны чакырганда колдонулат. Бул функцияны – mno-pa-outline-cals опциясы аркылуу өчүрсө болот, же процедуралык абстракцияны -mno-pa-on- аркылуу объект файлы же функция үчүн толугу менен өчүрсө болот.file -mno-pa-on-функция, тиешелүүлүгүнө жараша, же nopa атрибутун (__nopa спецификери) функциялар менен тандалып колдонуу менен.
  • Код камтуу макросу Эгерде жарактуу -mcodecov параметри көрсөтүлсө, компилятор эми __CODECOV макросун аныктайт.
  • Эстутум резервдөө опциясы xc8-cc драйвери эми AVR максаттарын курууда -mreserve=space@start:end опциясын кабыл алат. Бул параметр берилген эстутум диапазонун маалымат же программа эс тутум мейкиндигинде сактайт, бул шилтемени бул аймактагы кодду же объекттерди толтуруусуна жол бербейт.
  • Акылдуураак акылдуу IO Smart IO функцияларына бир нече жакшыртуулар киргизилди, анын ичинде printf негизги кодуна жалпы оңдоолор киргизилди, %n конверсия спецификациясын көз карандысыз вариант катары кароо, талап боюнча vararg поп режимдерин байланыштыруу, иштетүү үчүн мүмкүн болсо кыскараак маалымат түрлөрүн колдонуу IO функциясынын аргументтери жана талаанын кеңдигинде жана тактыкта ​​иштөөдө жалпы кодду факторинг. Бул олуттуу кодду жана маалыматтарды үнөмдөөгө, ошондой эле IOнун аткаруу ылдамдыгын жогорулатууга алып келиши мүмкүн.

Версия 2.39 (Функционалдык коопсуздук релизи)
Network Server License MPLAB XC8 Functional Safety Compiler бул релиз Network Server License колдойт.

Версия 2.36
Жок.

Версия 2.35

  • Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 жана AVR64DD32.
  • Жакшыртылган контекстти алмаштыруу Жаңы -mcall-isr-prologues опциясы үзгүлтүккө учуратуу функцияларын киргизүүдө регистрлерди кантип сактаарын жана үзгүлтүккө учуратуу тартиби аяктаганда ал регистрлер кантип калыбына келтирилерин өзгөртөт. Бул -mcall-prologues опциясына окшош иштейт, бирок үзгүлтүккө учуратуу функцияларына (ISRs) гана таасир этет.
  • Андан да жакшыртылган контекстти алмаштыруу Жаңы -mgas-isr-prologues опциясы майда үзгүлтүккө учуратуу кызмат көрсөтүүлөрү үчүн түзүлгөн контексттик которуштуруу кодун көзөмөлдөйт. Иштетилгенде, бул функция ассемблер реестрди колдонуу үчүн ISRди сканерлейт жана керек болсо, бул колдонулган регистрлерди гана сактайт.
  • Конфигурациялануучу флэш картасы AVR DA жана AVR DB үй-бүлөлөрүндөгү кээ бир түзмөктөрдө SFR (мисалы, FLMAP) бар, ал программа эстутумунун кайсы 32к бөлүмү маалымат эстутумуна түшүрүлө турганын аныктайт. Жаңы - mconst-data-in-config-mapped-progmem опциясы шилтеме берүүчү бардык квалификацияланган маалыматтарды бир 32k бөлүмгө жайгаштыруу үчүн колдонулушу мүмкүн жана бул маалыматтардын эстутум мейкиндигине жайгаштырылышын камсыз кылуу үчүн тиешелүү SFR реестрин автоматтык түрдө инициализациялоо үчүн колдонулат. , анда ал натыйжалуураак жеткиликтүү болот.
  • Микрочиптин бирдиктүү стандарттык китепканалары Бардык MPLAB XC компиляторлору Микрочиптин бирдиктүү стандарттык китепканасын бөлүшүшөт, ал эми MPLAB XC8дин ушул релизинде жеткиликтүү. AVR® MCU үчүн MPLAB® XC8 C Compiler Колдонуучунун колдонмосу мындан ары бул стандарттык функциялар үчүн документтерди камтыбайт. Бул маалыматты эми Microchip Unifed Standard Library Reference Guide-ден тапса болот. Мурда avr-libc тарабынан аныкталган кээ бир функциялар мындан ары жеткиликтүү эмес экенин эске алыңыз. (Караңыз: Китепкананын функциялары.)
  • Smart IO Жаңы бирдиктүү китепканалардын бир бөлүгү катары printf жана scanf үй-бүлөлөрүндөгү IO функциялары азыр бул функциялардын программада кандайча колдонулушунун негизинде ар бир түзүүдө жекече түзүлөт. Бул программа тарабынан колдонулган ресурстарды олуттуу кыскарта алат.
  • Smart IO жардам опциясы Акылдуу IO функцияларына (мисалы, printf() же scanf() чалууларды талдоодо компилятор формат саптарынан дайыма аныктай албайт же аргументтерден чалууга талап кылынган конверсиянын спецификаторлорун чыгара албайт. Мурда компилятор ар дайым жасай турган эч кандай божомолдор жок жана толук функционалдык IO функциялары программанын акыркы сүрөтү менен байланыштырылышын камсыз кылуу үчүн жаңы -msmart-io-format=fmt опциясы кошулду, андыктан компилятор анын ордуна акылдуу IO тарабынан колдонулган конверсия спецификаторлору жөнүндө маалымат бере алат. Ашыкча узун IO тартибин байланыштырууга жол бербөө үчүн колдонулушу бүдөмүк болгон функциялар (Көбүрөөк маалымат үчүн smart-io-формат опциясын караңыз.)
  • Ыңгайлаштырылган бөлүмдөрдү жайгаштыруу Мурда -Wl,–section-start опциясы шилтеме берүүчү скрипт ошол эле аталыштагы чыгаруу бөлүмүн аныктаганда гана көрсөтүлгөн бөлүмдү суралган дарекке жайгаштырчу. Андай болбогондо, бөлүм шилтеме берүүчү тандаган дарекке жайгаштырылып, параметр негизинен этибарга алынбай калган. Эми параметр шилтеме берүүчү скрипт бөлүмдү аныктабаса дагы, бардык ыңгайлаштырылган бөлүмдөр үчүн колдонулат. Бирок, .text, .bss же .data сыяктуу стандарттык бөлүмдөр үчүн эң жакшы туура бөлүштүргүч дагы эле алардын жайгаштырылышын толук көзөмөлдөй турганын жана параметр эч кандай таасир этпей турганын эске алыңыз. Колдонуучунун колдонмосунда сүрөттөлгөндөй -Wl,-Tsection=addr параметрин колдонуңуз.

Версия 2.32

  • Стек жетектөөчүсү PRO компилятордун лицензиясы менен жеткиликтүү, компилятордун стек багыттоо өзгөчөлүгү программа тарабынан колдонулган ар кандай стектин максималдуу тереңдигин баалоо үчүн колдонулушу мүмкүн. Ал программанын чалуу графигин түзөт жана талдайт, ар бир функциянын стектин колдонулушун аныктайт жана программа тарабынан колдонулган стектердин тереңдигин аныктоого боло турган отчетту түзөт. Бул өзгөчөлүк -mchp-stack-usage буйрук сабы опциясы аркылуу иштетилген. Стекти колдонуунун корутундусу аткарылгандан кийин басылып чыгат. Карта файлында деталдуу стек отчету бар, аны кадимки жол менен сураса болот.
  • Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB, AVR28DB64 жана AVR32.
  • Төмөнкү AVR бөлүктөрү үчүн артка кайтарылган түзмөк колдоосу мындан ары жеткиликтүү эмес: AVR16DA28, AVR16DA32 жана AVR16DA48.

Версия 2.31
Жок.

Версия 2.30

  • Маалыматтарды инициализациялоону болтурбоо үчүн жаңы опция Жаңы -mno-data-init драйвери опциясы маалыматтарды инициализациялоону жана BSS бөлүмдөрүн тазалоону алдын алат. Ал ассемблер файлдарындагы do_clear_bss символдорунун чыгышын басуу аркылуу иштейт, бул өз кезегинде шилтеме берүүчү тарабынан ал процедураларды киргизүүгө жол бербейт.
  • Өркүндөтүлгөн оптималдаштыруу Оптималдаштыруунун бир катар жакшыртуулары жасалды, анын ичинде ашыкча кайтаруу нускамаларын алып салуу, эгер бит болсо өткөрүп жиберүү инструкциясынан кийинки кээ бир секирүүлөрдү алып салуу жана жакшыртылган процедуралык абстракция жана бул процессти кайталоо мүмкүнчүлүгү.
    Бул оптималдаштыруулардын айрымдарын көзөмөлдөө үчүн кошумча опциялар азыр жеткиликтүү, атап айтканда -fsection- anchors , бул бир символго карата аткарылуучу статикалык объекттерге кирүү мүмкүнчүлүгүн берет; -mpa- iterations=n , бул процедуралык абстракция итерацияларынын санын демейки 2ден өзгөртүүгө мүмкүндүк берет; жана, -mpa-callcost-shortcall, ал дагы агрессивдүү процедуралык абстракцияны аткарат, шилтеме берүүчү узак чалууларды эс алат деген үмүттө. Бул акыркы параметр, эгерде негизги божомолдор аткарылбаса, коддун өлчөмүн көбөйтүүгө болот.
  • Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128, AVR28, AVR128, AVR32, 128DB48.
  • Төмөнкү AVR бөлүктөрү үчүн артка тартылган түзмөктү колдоо кызматы мындан ары жеткиликсиз: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616Q, ATA6617.

Версия 2.29 (Функционалдык коопсуздук релизи)

  • Компилятордун орнотулган инструкцияларынын баш файлы Компилятор MISRA сыяктуу тил спецификацияларына шайкеш келишин камсыздоо үчүн, , жаңыртылган. Бул аталыш __builtin_avr_nop() жана __builtin_avr_delay_cycles() сыяктуу бардык ички функциялардын прототиптерин камтыйт. Кээ бир орнотулган жабдыктар MISRAга туура келбеши мүмкүн; компилятордун буйрук сабына define __XC_STRICT_MISRA кошуу менен аларды өткөрүп жиберсе болот. Орнотулган түзүлүштөр жана алардын декларациялары такталган тууралык түрлөрүн колдонуу үчүн жаңыртылган.

Версия 2.20

  • Жаңы түзмөктү колдоо төмөнкү AVR бөлүктөрү үчүн жеткиликтүү: ATTINY1624, ATTINY1626 жана ATTINY1627.
  • Жакшыраак эң туура бөлүштүрүү Компилятордогу эң жакшы туура бөлүштүргүч (BFA) жакшыртылган, ошондуктан бөлүмдөр жакшыраак оптималдаштырууга мүмкүндүк берүүчү тартипте бөлүштүрүлгөн. BFA азыр аталган дарек мейкиндиктерин колдойт жана маалыматтарды инициализациялоону жакшыраак иштетет.
  • Жакшыртылган процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу азыр көбүрөөк код ырааттуулугунда аткарылды. Бул оптималдаштыруу коддун көлөмүн көбөйтүшү мүмкүн болгон мурунку жагдайлар оптималдаштыруу кодун шилтемечинин таштанды чогултуу процессинен кабардар кылуу менен чечилген.
  • AVR Assembler жок AVR Assembler мындан ары бул бөлүштүрүүгө кошулбайт.

Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.10

  • Кодду камтуу Бул чыгарылыш долбоордун баштапкы коду канчалык деңгээлде аткарылганын талдоону жеңилдеткен кодду камтуу өзгөчөлүгүн камтыйт. Аны иштетүү үчүн -mcodecov=ram параметрин колдонуңуз. Аппараттык жабдыңызда программа аткарылгандан кийин, коддун камтуу маалыматы аппаратта чогултулат жана бул MPLAB X IDE тарабынан код камтуу плагини аркылуу өткөрүлүп берилиши жана көрсөтүлүшү мүмкүн. Бул плагин жөнүндө маалымат алуу үчүн IDE документтерин караңыз.
    #pragma nocodecov кийинки функцияларды камтуу талдоосунан чыгарып салуу үчүн колдонулушу мүмкүн. Идеалында, бул файлды толугу менен камтуу талдоосунан чыгарып салуу үчүн, файлдын башына прагма кошулушу керек. Же болбосо, __атрибут__((nocodecov)) камтуу талдоосунан белгилүү бир функцияны алып салуу үчүн колдонулушу мүмкүн.
  • Түзмөктүн сүрөттөмөсү файлдары avr_chipinfo.html деп аталган жаңы түзмөк файлы компилятордун бөлүштүрүлүшүнүн docs каталогунда жайгашкан. Бул файл компилятор тарабынан колдоого алынган бардык түзмөктөрдүн тизмеси. Түзмөктүн атын чыкылдатыңыз, ал ошол түзмөк үчүн бардык уруксат берилген конфигурация бит жөндөөлөрүн/маани жуптарын көрсөткөн баракты ачат, мисалыamples.
  • Процедуралык абстракция Процедуралык абстракцияны оптималдаштыруу компиляторго кошулган, ал монтаждык коддун жалпы блокторун ошол блоктун алынган көчүрмөсүнө чакыруулар менен алмаштырат. Булар өзүнчө тиркеме аркылуу аткарылат, аны компилятор 2, 3 же s деңгээлдеги оптималдаштырууларды тандоодо автоматтык түрдө чакырат. Бул оптималдаштыруу коддун өлчөмүн азайтат, бирок алар аткаруу ылдамдыгын жана коддун мүчүлүштүктөрүн оңдоону азайтышы мүмкүн. Процедуралык абстракцияны -mno-pa опциясын колдонуу менен оптималдаштыруунун жогорку деңгээлдеринде өчүрсө болот же -mpa аркылуу төмөнкү оптималдаштыруу деңгээлдеринде (лицензияңызга жараша) иштетилиши мүмкүн. Аны -mno-pa-on- аркылуу объект файлы үчүн өчүрүүгө болот.file=filename , же -mno-pa-on- function=function колдонуу менен функция үчүн өчүрүлгөн. Булак кодуңуздун ичинде процедуралык абстракцияны функциянын аныктамасы менен __attribute__((nopa)) колдонуу менен же __attribute__((nopa,noinline)) чейин кеңейген __nopaны колдонуу менен функция үчүн өчүрүүгө болот жана ошентип функциянын киришинин ишке ашуусуна жол бербейт. жана ички коддун абстракциясы бар.
  • Прагмада кулпулоо битинин колдоосу #pragma конфигурациясын эми AVR кулпу биттерин жана башка конфигурация биттерин көрсөтүү үчүн колдонсо болот. Бул прагма менен колдонула турган жөндөө/маани түгөйлөрү үчүн avr_chipinfo.html файлын (жогоруда айтылган) текшериңиз.
  • Жаңы түзмөктү колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: AVR28DA128, AVR64DA128, AVR32DA128 жана AVR48DA128.

Версия 2.05

  • Бул компилятордун жана лицензия менеджеринин macOS версиясы эми 64 биттик колдонмо болуп саналат. Бул компилятордун MacOSтун акыркы версияларында эскертүүсүз орнотулуп, иштешин камсыздайт.
  • Программанын эсиндеги Const объекттери. Эми компилятор конст-квалификациялуу объекттерди оперативдүү эс тутумда эмес, программанын Flash эс тутумуна жайгаштыра алат. Компилятор конст-квалификациялуу глобалдык маалыматтар программанын флеш эсинде сакталышы үчүн жана бул маалыматтарга программалык эстутумдун тиешелүү инструкциялары аркылуу түз жана кыйыр түрдө кирүүгө болот деп өзгөртүлгөн. Бул жаңы функция демейки боюнча иштетилген, бирок -mno-const-data-in-progmem опциясын колдонуу менен өчүрүүгө болот. avrxmega3 жана avrtiny архитектуралары үчүн бул функция талап кылынбайт жана ар дайым өчүрүлөт, анткени программанын эс тутуму бул түзмөктөр үчүн маалымат даректер мейкиндигине түшүрүлгөн.
  • Бул компилятордун акысыз стандарттуу Лицензияланбаган (акысыз) версиялары эми 2-деңгээлге чейин оптималдаштырууга мүмкүндүк берет. Бул стандарттык лицензияны колдонуу менен мурда мүмкүн болгон нерсеге окшош болбосо да, чыгарууга мүмкүндүк берет.
  • Кош келиңиз AVRASM2 2 биттик түзүлүштөр үчүн AVRASM8 ассемблери азыр XC8 компиляторду орнотуучуга киргизилген. Бул ассемблер XC8 компилятору тарабынан колдонулбайт, бирок кол менен жазылган монтаж булагына негизделген долбоорлор үчүн жеткиликтүү.
  • Жаңы түзмөктү колдоо төмөнкү бөлүктөр үчүн жеткиликтүү: ATMEGA1608, ATMEGA1609, ATMEGA808 жана ATMEGA809.

Версия 2.00

  • Жогорку деңгээлдеги драйвер xc8-cc деп аталган жаңы драйвер азыр мурунку avr-gcc драйверинин жана xc8 драйверинин үстүндө отурат жана ал максаттуу түзүлүштү тандоонун негизинде тиешелүү компиляторду чакыра алат. Бул драйвер GCC стилиндеги варианттарды кабыл алат, алар аткарылып жаткан компиляторго которулат же ага өткөрүлүп берилет. Бул драйвер каалаган AVR же PIC буталары менен окшош семантикалуу варианттардын окшош топтомун колдонууга мүмкүндүк берет жана ошондуктан компиляторду чакыруунун сунушталган жолу болуп саналат. Зарыл болсо, эски avr-gcc драйверин мурунку компилятор версияларында кабыл алган эски стилдеги опцияларды колдонуу менен түз чакырса болот.
  • Common C Interface Бул компилятор эми MPLAB Common C Interface менен шайкеш келиши мүмкүн, бул баштапкы кодду бардык MPLAB XC компиляторлору аркылуу оңой көчүрүүгө мүмкүндүк берет. -mext=cci параметри көптөгөн тил кеңейтүүлөрү үчүн альтернативдүү синтаксисти иштетип, бул функцияны сурайт.
  • Жаңы китепканачы айдоочусу Жаңы китепканачы айдоочу мурунку PIC китепканачысынын жана AVR avr-ar китепканасынын жогору жагында жайгашкан. Бул драйвер GCC-архивдөөчү стилиндеги варианттарды кабыл алат, алар аткарылып жаткан китепканачыга которулат же ага өткөрүлүп берилет. Жаңы драйвер кандайдыр бир PIC же AVR китепкана файлын түзүү же манипуляциялоо үчүн окшош семантикасы бар окшош варианттардын топтомун колдонууга мүмкүндүк берет жана ошондуктан китепканачыны чакыруунун сунушталган жолу болуп саналат. Эгерде эски долбоорлор үчүн талап кылынса, мурунку китепканачыны түз эле мурунку компилятордун версияларында кабыл алган эски стилдеги варианттарды колдонуу менен чакырса болот.

Миграция маселелери

Төмөнкү функциялар азыр компилятор тарабынан башкача иштетилет. Кодду ушул компилятордун версиясына көчүрсө, бул өзгөртүүлөр баштапкы кодуңузга өзгөртүүлөрдү талап кылышы мүмкүн. Почтачалардагы версиянын номери кийинки өзгөртүүлөрдү колдоо үчүн компилятордун биринчи версиясын көрсөтөт.

Версия 2.45
Жок.

Версия 2.41
Так эмес fma функциялары алынып салынды (XC8-2913) C99 стандарттык китепканасы ( ) бир тегеректөө үчүн чексиз тактык менен көбөйтүү-кошууну эсептеген эмес, тескерисинче, ар бир операцияда тегеректөө каталарын топтогон. Бул функциялар берилген китепканадан алынып салынды.

Версия 2.40
Жок.

Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.36
Жок.

Версия 2.35

  • Саптан базаларды иштетүү (XC8-2420) Башка XC компиляторлору менен ырааттуулукту камсыз кылуу үчүн, XC8 string-to функциялары, мисалы, strtol() ж. жана анын ордуна орнотот. С стандарты бул базалык мааниден ашып кеткенде функциялардын жүрүм-турумун аныктабайт.
  • Ылдамдыкты туура эмес оптималдаштыруу 3-деңгээлди оптималдаштырууну (-O3) тандоодо процедуралык абстракцияны оптималдаштыруу иштетилип жаткан. Бул оптималдаштыруу коддун ылдамдыгынын эсебинен коддун өлчөмүн азайтат, андыктан аткарылбашы керек болчу. Бул оптималдаштыруу деңгээлин колдонгон долбоорлор бул чыгарылыш менен курулганда коддун өлчөмү жана аткаруу ылдамдыгы боюнча айырмачылыктарды көрүшү мүмкүн.
  • Китепкана функционалдуулугу Көптөгөн стандарттык C китепканасынын функцияларынын коду азыр Microchipдин Бирдиктүү Стандарттык китепканасынан алынган, ал кээ бир жагдайларда мурунку avr-libc китепканасы тарабынан берилгенге салыштырмалуу башкача жүрүм-турумун көрсөтүшү мүмкүн. Мисалы үчүнample, мындан ары lprintf_flt китепканасына (-lprintf_flt опциясы) шилтеме кылуунун зарылчылыгы жок, float форматындагы спецификаторлор үчүн форматталган IO колдоосун күйгүзүү. Микрочиптин бирдиктүү стандарттык китепканасынын акылдуу IO функциялары бул параметрди ашыкча кылат. Кошумчалай кетсек, флеште const саптарында иштеген сап жана эстутум функциялары (мисалы, strcpy_P() ж.б.) үчүн _P суффикстүү процедураларды колдонуунун кереги жок. Стандарттык C процедуралары (мисалы, strcpy() программанын эс тутумундагы const-дата-дата-функциясы иштетилгенде, мындай маалыматтар менен туура иштейт.

Версия 2.32
Жок.

Версия 2.31
Жок.

Версия 2.30
Жок.

Версия 2.29 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.2
DFP макети өзгөртүлдү. Эми компилятор DFP (Түзмөктүн үй-бүлөлүк топтомдору) колдонгон башка макетти болжолдойт. Бул эски DFP бул чыгарылыш менен иштебей калышы мүмкүн жана эски компиляторлор эң акыркы DFPдерди колдоно албай калат дегенди билдирет.

Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.10
Жок

Версия 2.05
Программанын эсиндеги Const объекттери Демейки боюнча, const-квалификацияланган объекттер программанын эсине жайгаштырыларын жана аларга кирерин эске алыңыз (бул жерде сүрөттөлгөндөй). Бул сиздин долбоордун көлөмүнө жана аткаруу ылдамдыгына таасир этет, бирок RAM колдонууну азайтышы керек. Бул функция, эгерде керек болсо, -mno-const-data-in-progmem опциясын колдонуу менен өчүрүлүшү мүмкүн.

Версия 2.00

  • Конфигурация сактагычтары Эми прибор конфигурациясынын сактагычтарын конфигурациялоо прагмасы аркылуу программалаштырылышы мүмкүн, андан кийин сактагычтын абалын көрсөтүү үчүн маани жуптары коюлат, мисалы, #pragma config WDTON = SET #pragma config BODLEVEL = BODLEVEL_4V3
  • Абсолюттук объекттер жана функциялар Объекттерди жана функцияларды эми CCI __at(дареги) спецификаторунун жардамы менен эс тутумдун белгилүү дарегине жайгаштырса болот, мисалыampле:
    • #киргизүү
      int foobar __at(0x800100);
      char __at(0x250) getID(int ofset) {…}
      Бул спецификатордун аргументи биринчи байт же инструкция жайгаштырыла турган даректи билдирген туруктуу болушу керек. RAM даректери 0x800000 офсеттин жардамы менен көрсөтүлөт. Бул функцияны колдонуу үчүн CCIди иштетиңиз.
  • Жаңы үзүлүү функциясынын синтаксиси Компилятор эми CCI __interrupt(num) спецификасын кабыл алып, С функциялары үзгүлтүктөрдү иштеткичтер экенин көрсөтүүдө. Спецификация үзгүлтүккө учураган санды алат, мисалыample: #include void __ үзгүлтүккө учуратуу (SPI_STC_vect_num) spi_Isr (жараксыз) { … }

Fixed Issues

Төмөнкүлөр түзүүчүгө киргизилген оңдоолор. Булар түзүлгөн коддогу мүчүлүштүктөрдү оңдоп же компилятордун иштөөсүн колдонуучунун колдонмосунда каралган же көрсөтүлгөнгө өзгөртүшү мүмкүн. Почтачалардагы версиянын номери кийинки маселелер боюнча оңдоолорду камтыган компилятордун биринчи версиясын көрсөтөт. Аталышындагы кашаадагы энбелги(лер) бул маселенин байкоо базасындагы идентификациясы. Колдоо кызматына кайрылуу керек болсо, булар пайдалуу болушу мүмкүн.
Түзмөккө тиешелүү кээ бир маселелер түзмөк менен байланышкан Device Family Pack (DFP) менен оңдолгонуна көңүл буруңуз. DFPге киргизилген өзгөртүүлөр жана эң акыркы топтомдорду жүктөп алуу үчүн MPLAB топтомунун менеджерин караңыз.

Версия 2.45

  • Роуминг лицензиясы иштебей калды (XCLM-235) Роуминг лицензиялары Linux платформаларында 2.28ден кийинки glibc версияларында туура иштебей калды.
  • Түзүмдөрдүн массивдери менен ички ката (XC8-3069) Структуранын көп өлчөмдүү массив мүчөлөрү иштетилгенде, дарек мейкиндигинин квалификациясы массивге туура эмес жайылтылган. Бул дарек мейкиндигинин квалификациясынын маалыматынын дал келбей калышына жана компилятордун ички катасына алып келди. Бул абал оңдолду.
  • Башталбаган агымдарга туура эмес жазуулар (ML-353, XC8-3100) Эгерде стандарттык чыгаруу/ката агымдары FDEV_SETUP_STREAM же _init_stdout/_init_stderr аркылуу ачык орнотулбаса, аларга жазуу аракети аныкталбаган жүрүм-турумга алып келди. Бул perror() сыяктуу stdlib функцияларынын жазууларына да таасирин тийгизди. Бул агымдарга алар инициализацияланганга чейинки бардык жазуулар эми этибарга алынбайт.
  • Колдоого алынбаган модификатор (XC8-2505) avr-libc китепканасы printf стилиндеги конверсия спецификаторлорундагы * модификаторун колдобойт, мисалыample “%.*f”. Бул азыр Микрочиптин бирдиктүү стандарттык китепканасын киргизүү менен колдоого алынат.
  • Бир нече инициализацияланбаган эскертүүлөр (XC8-2409) Компилятор инициализацияланбаган const массивине туш болгондо бир нече окшош эскертүү билдирүүлөрүн чыгарып жаткан. Билдирүү бир эле жолу берилиши керек болчу, азыр бул жагдай пайда болгондо.

Версия 2.41

  • Venturaдагы (XC8-3088) Dongle көйгөйлөрү Компиляторду лицензиялоо үчүн колдонулган жабдыктар macOS Ventura хостторунда туура окулбай калышы мүмкүн, натыйжада лицензиялоо иштебей калышы мүмкүн. XCLM лицензия менеджерине өзгөртүүлөр бул маселени чечет.
  • Эстутум бөлүштүрүүнүн туура эмес көрсөткүчү (XC8-2925) Жөнөкөй динамикалык эстутумду бөлүштүрүү ишке ашырууну колдонууда суралган стандарттуу китепкана эс тутумун башкаруу функцияларын (malloc() ж. Эми NULL көрсөткүчү кайтарылып берилет жана мындай кырдаалдарда ката ENOMEMге коюлат.
  • Так эмес fma функциялары алынып салынды (XC8-2913) C99 стандарттык китепканасы fma()-үй-бүлө функциялары ( ) бир тегеректөө үчүн чексиз тактык менен көбөйтүү-кошууну эсептеген эмес, тескерисинче, ар бир операцияда тегеректөө каталарын топтогон. Бул функциялар берилген китепканадан алынып салынды.
  • Сапты конвертациялоонун туура эмес иштетилиши (XC8-2921, XC8-2652) strtod() аркылуу конвертациялоо үчүн "предметтик ырааттуулук" экспоненциалдык форматта калкыма чекиттүү санды камтыса жана e/E'ден кийин күтүлбөгөн белги пайда болгондо тамга, анда endptr берилген жерде, ага дан кийинки символду көрсөткөн дарек ыйгарылган, ал эми ал e//E символунун өзүнө ишарат кылышы керек болчу, анткени ал өзгөртүлбөй калган. Мисалы үчүнample, strtod(“100exx”, &ep) 100.00 кайтарып, epти саптын “exx” бөлүгүн көрсөтүүгө коюу керек, ал эми функция туура маанини кайтарып, бирок саптын “xx” бөлүгүн коюп жаткан.

Версия 2.40

  • Өтө жайбаракат (XC8-2876) -mrelax опциясын колдонгондо, компилятор кээ бир бөлүмдөрдү чогуу бөлүштүрбөй койгон, натыйжада коддун оптималдуу өлчөмдөрү азыраак болгон. Бул жаңы MUSL китепканаларын колдонгон код же алсыз символдор менен болгон болушу мүмкүн.
  • Карталоо өзгөчөлүгү эскертүүдө (XC8-2875) көрсөтүлгөндөй өчүрүлгөн эмес. Эгерде const-data-in-config-mapped-progmem өзгөчөлүгү параметрди колдонуу менен ачык иштетилген болсо жана const-data-in-progmem өзгөчөлүгү өчүрүлгөн болсо, const-data-in деген эскертүү билдирүүсүнө карабастан, шилтеме кадамы ишке ашпай калды. -config-mapped-progmem функциясы автоматтык түрдө өчүрүлгөн, бул таптакыр туура эмес. Бул кырдаалда const-data-in-config-mapped-progmem функциясы азыр толугу менен өчүрүлгөн.
  • DFP NVMCTRL'ге туура кирүү үчүн өзгөрөт (XC8-2848) AVR64EA түзмөктөрү тарабынан колдонулган иштетүү убакытынын баштоо коду NVMCTRL реестри Конфигурацияны өзгөртүүдөн коргоо (CCP) астында экенин жана колдонулган бетке IO SFRди кое албаганын эске алган эмес. const-data-in-config-mapped-progmem компилятор өзгөчөлүгү менен. AVR-Ex_DFP 2.2.55 версиясында жасалган өзгөртүүлөр ишке киргизүү кодун бул реестрге туура жазууга мүмкүндүк берет.
  • DFP флэш-карталоону болтурбоо үчүн өзгөртүүлөр (XC8-2847) AVR128DA28/32/48/64 Силикон катасында (DS80000882) билдирилген жаркыраган карта түзмөгүнүн өзгөчөлүгүнө байланыштуу көйгөйдү чечүү жолу ишке ашырылды. const-data-in-config-mapped-progmem компилятор өзгөчөлүгү демейки боюнча жабыркаган түзмөктөр үчүн колдонулбайт жана бул өзгөртүү AVR-Dx_DFP 2.2.160 версиясында пайда болот.
  • sinhf же coshf (XC8-2834) менен куруу катасы sinhf() же coshf() китепкана функцияларын колдонуу аракети аныкталбаган шилтемени сүрөттөгөн шилтеме катасына алып келди. Шилтемеленген жетишпеген функция эми компилятордун бөлүштүрүлүшүнө кошулду.
  • nopa (XC8-2833) менен каталарды түзүңүз __asm__() аркылуу ассемблер аты көрсөтүлгөн функция менен nopa атрибутун колдонуу ассемблерден ката билдирүүлөрүн пайда кылды. Бул айкалыштыруу мүмкүн эмес.
  • Көрсөткүч аргументтери менен вариадик функциянын катасы (XC8-2755, XC8-2731) Аргументтердин өзгөрүлмө саны бар функциялар 24 биттик (__memx түрү) көрсөткүчтөр программадагы const-data-in-progmem өзгөчөлүгү болгондо өзгөрмө аргументтердин тизмесинде өткөрүлүшүн күтөт. иштетилген. Маалымат эстутумунун көрсөткүчү болгон аргументтер 16 биттик объекттер катары берилип, акыры окулганда коддун бузулушуна алып келген. Const-data-in-progmem өзгөчөлүгү иштетилгенде, бардык 16-бит көрсөткүчтөрдүн аргументтери эми 24-бит көрсөткүчтөрүнө айландырылат.
  • strtoxxx китепкана функциялары иштебей жатат (XC8-2620) const-data-in-progmem функциясы иштетилгенде, strtoxxx китепкана функцияларындагы endptr параметри программанын эсинде жок булак сап аргументтери үчүн туура жаңыртылган эмес.
  • Жараксыз трансляциялар боюнча эскертүүлөр (XC8-2612) Эгерде программадагы const функциясы иштетилсе жана сап литералынын дареги дайындардын дарек мейкиндигине ачык түрдө чыгарылса (const квалификациясын түшүрүп), компилятор ката чыгарат.ample, (uint8_t *) "Салам дүйнө!" . Эгер const маалымат көрсөткүчү дайындардын дарек мейкиндигине ачык түрдө чыгарылганда дарек жараксыз болушу мүмкүн болсо, эскертүү көйгөй болуп саналат.
  • Башталбаган const объекттерин жайгаштыруу (XC8-2408) Башталбаган жана const туруксуз объекттер const
    алардын программалык эс тутумунун бардыгын же бир бөлүгүн маалымат дарек мейкиндигине салыштырган түзмөктөрдө программалык эстутумда жайгаштырылбай калган. Бул түзүлүштөр үчүн мындай объекттер эми программалык эстутумга жайгаштырылып, алардын иштеши башка түзүлүштөр менен шайкеш келет.

Версия 2.39 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.36
Кечиктирүүдө ката (XC8-2774) Демейки Акысыз режимди оптималдаштыруудагы кичине өзгөрүүлөр операнд туюнтмаларынын кечиктирилген орнотулган функцияларга тынымсыз бүктөлүшүнө жол бербейт, натыйжада алар туруктуу эместер катары каралып, катаны козгоду: __builtin_avr_delay_cycles компиляция убактысынын бүтүн санын күтөт туруктуу.

Версия 2.35

  • __at (XC8-2653) колдонуу менен жанаша бөлүштүрүү Бир эле аталыштагы бөлүмдө бир нече объекттердин орундарын жанаша бөлүштүрүү жана __at() колдонуу туура иштеген жок. Мисалы үчүнampле:
    const char arr1[] __attribute__((бөлүм(".mysec"))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((бөлүм(".mysec"))) = {0xEF, 0xFE}; arr2ден кийин дароо arr1 жайгаштырылышы керек болчу
  • Бөлүмдүн башталгыч даректерин көрсөтүү (XC8-2650) -Wl,–section-start опциясы бөлүмдөрдү көрсөтүлгөн баштапкы дарекке жайгаштырбай койду. Бул маселе каалагандай аталыштагы бөлүмдөр үчүн оңдолду; бирок, ал -Wl,-T опциясы менен жайгаштырылышы керек болгон .text же .bss сыяктуу стандарттык бөлүмдөр үчүн иштебейт. Эс алуу учурунда байланыштыргыч бузулат (XC8-2647) -mrelax оптималдаштыруу иштетилгенде жана жеткиликтүү эстутумга туура келбеген код же маалымат бөлүмдөрү болгондо, шилтеме берүүчү кыйрады. Эми, мындай шартта, анын ордуна ката билдирүүлөрү чыгарылат.
  • Артка кайтуу жок (XC8-2646) –nofallback параметри туура эмес ишке ашырылган же документтештирилген эмес. Эми бул компилятор лицензиясыз болсо, компилятор кайра төмөн оптималдаштыруу жөндөөсүнө түшпөсүн жана анын ордуна ката чыгарышын камсыз кылуу үчүн тандалышы мүмкүн.
  • Ылдамдыкты туура эмес оптималдаштыруу (XC8-2637) 3-деңгээлдеги оптималдаштырууну (-O3) тандоодо процедуралык абстракцияны оптималдаштыруу иштетилип жаткан. Бул оптималдаштыруу коддун ылдамдыгынын эсебинен коддун өлчөмүн азайтат, андыктан аткарылбашы керек болчу.
  • Начар EEPROM мүмкүнчүлүгү (XC8-2629) - mconst-data-in-progmem опциясы иштетилгенде (бул демейки абал), натыйжада EEPROM эс тутуму туура окулбай калганда, eeprom_read_block тартиби Xmega түзмөктөрүндө туура иштеген жок.
  • Эстутум жараксыз бөлүштүрүлгөн (XC8-2593, XC8-2651) -Ttext же -Tdata шилтемеси опциясы (мисалы, үчүн)ample -Wl драйверинин опциясы аркылуу өттү) көрсөтүлсө, тиешелүү текст/маалымат аймагынын келип чыгышы жаңыртылды; бирок, акыркы дарек тиешелүү түрдө туураланган эмес, бул аймак максаттуу түзмөктүн эс тутумунун диапазонунан ашып кетиши мүмкүн.
  • Ашыкча атрибуцияланган функция менен бузулуу (XC8-2580) Эгерде функция үзгүлтүккө учуратуу, сигнал же nmi атрибуттарынын бирден көбүн колдонуу менен жарыя кылынса, компилятор кыйрады, мисалы, __атрибут__((__сигнал__, __үзгүлтүк__)).
  • ATtiny үзгүлтүккө учуроо коду жараксыз (XC8-2465) ATtiny түзмөктөрүн курууда жана оптималдаштыруулар өчүрүлгөндө (-O0), үзгүлтүккө учуратуу функциялары диапазондон тышкары операндды иштетиши мүмкүн
  • Параметрлер өткөрүлбөй жатат (XC8-2452) -Wl опциясын бир нече үтүр менен ажыратылган байланыштыргыч опциялары менен колдонгондо, шилтеме берүүчү опциялардын баары шилтеме берүүчүгө өткөрүлүп берилген эмес.
  • Программанын эстутумун кыйыр түрдө окуу катасы (XC8-2450) Кээ бир учурларда компилятор көрсөткүчтөн программа эсине эки байт маанини окуп жатканда ички катаны (таанылбай турган insn) чыгарды.

Версия 2.32
Китепканага экинчи кирүү ишке ашпай калды (XC8-2381) Учурдагы китепкана архивине кирүү үчүн xc8-ar.exe китепкана архивинин Windows версиясын экинчи жолу чакыруу ката кабарынын атын өзгөртүү мүмкүн болбой калгандыктан ишке ашпай калган болушу мүмкүн.

Версия 2.31
Түшүндүрүлбөгөн компилятордун каталары (XC8-2367) Системанын убактылуу каталогу чекит камтыган жолго коюлган Windows платформаларында иштеп жатканда '.' белгиси болсо, компилятор аткара албай калган болушу мүмкүн.

Версия 2.30

  • Глобалдык энбелгилер контурлангандан кийин туура эмес жайгаштырылды (XC8-2299) Глобалдык энбелгилерди процедуралык абстракция аркылуу ажыратылган монтаж ырааттуулугуна жайгаштырган кол менен жазылган монтаж коду туура эмес жайгаштырылышы мүмкүн.
  • Эс алуучу ката (XC8-2287) -mrelax опциясын колдонуу, куйруктан секирүү релаксация оптималдаштыруулары бөлүмдүн аягында болбогон ret нускамаларын алып салууга аракет кылганда, байланыштыргычтын бузулушуна алып келиши мүмкүн.
  • Энбелгилерди маанилер катары оптималдаштырууда бузулуу (XC8-2282) "Энбелгилер баалуулуктар катары" GNU C тилинин кеңейтүүсүн колдонуу менен код процедуралык абстракцияны оптималдаштыруу диапазонун оңдоо катасы менен бузулушуна алып келиши мүмкүн.
  • Анчалык эмес (XC8-2271) strstr() жана башка функциялардын прототиптери const -mconst-data-in-progmem өзгөчөлүгү өчүрүлгөндө кайтарылган сап көрсөткүчтөрүндө стандарттуу эмес квалификацияны мындан ары көрсөтпөңүз. avrxmega3 жана avrtiny түзмөктөрүндө бул функция биротоло иштетилерин эске алыңыз.
  • Жоголгон инициализаторлор (XC8-2269) Котормо бирдигинде бирден ашык өзгөрмө бөлүмгө жайгаштырылса (__бөлүм же __атрибуту__(((бөлүм))) жана биринчи мындай өзгөрмө нөлгө инициализацияланган же инициализатор жок болгондо, ошол эле котормо бирдигинде ошол эле бөлүмгө жайгаштырылган башка өзгөрмөлөр жоголгон.

Версия 2.29 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.20

  • Узун командалардагы ката (XC8-1983) AVR бутасын колдонууда, компилятор файл табылган жок катасы менен токтоп калышы мүмкүн, эгерде буйрук сабы өтө чоң болсо жана тырмакчалар, тескери сызыктар ж.б. өзгөчө символдорду камтыса.
  • Дайындалбаган родата бөлүмү (XC8-1920) AVR шилтемеси avrxmega3 жана avrtiny архитектураларын курууда ыңгайлаштырылган родата бөлүмдөрү үчүн эстутумду дайындай алган жок, бул эстутумдун кайталануу каталарын жаратышы мүмкүн

Версия 2.19 (Функционалдык коопсуздук релизи)
Жок.

Версия 2.10

  • Көчүрүү каталары (XC8-1891) Эң туура бөлүштүргүч шилтемелер релаксациялангандан кийин бөлүмдөрдүн ортосунда эс тутумдун "тешиктерин" калтыруу болгон. Эстутумду бөлүүдөн тышкары, бул компьютерге салыштырмалуу секирүүлөргө же чалуулардын диапазондон чыгып кетишине байланыштуу шилтемелердин ордун алмаштырууда каталардын болушу ыктымалдыгын жогорулатты.
  • Релаксация жолу менен өзгөртүлбөгөн инструкциялар (XC8-1889) Секирүү же чакыруу инструкциялары үчүн шилтемелердин релаксациясы болгон жок, алардын максаттары жайбаракат болгондо жетүүгө болот.
  • Жок функционалдуулук (XC8E-388) Бир нече аныктамалар clock_div_t жана clock_prescale_set() сыяктуу ATmega324PB, ATmega328PB, ATtiny441 жана ATtiny841 сыяктуу түзмөктөр үчүн аныкталган эмес.
  • Жок макрос _XC8_MODE_, __XC8_VERSION, __XC жана __XC8 препроцессордук макролору компилятор тарабынан автоматтык түрдө аныкталат. Булар азыр жеткиликтүү.

Версия 2.05

  • Ички компилятор катасы (XC8-1822) Windows астында курууда, кодду оптималдаштырууда ички компилятор катасы пайда болушу мүмкүн.
  • RAM ашыкчасы аныкталган жок (XC8-1800, XC8-1796) Жеткиликтүү RAMдан ашкан программалар компилятор тарабынан кээ бир учурларда аныкталган жок, натыйжада аткаруу коду иштебей калды.
  • Өткөрүлбөй калган флеш эстутум (XC8-1792) avrxmega3 жана avrtiny түзмөктөр үчүн флеш эстутумдун бөлүктөрү MPLAB X IDE тарабынан программаланбай калган болушу мүмкүн.
  • Негизги аткарылбай калуу (XC8-1788) Программада глобалдык өзгөрмөлөр аныкталбаган кээ бир учурларда, ишке киргизүү коду чыккан жок жана main() функциясына эч качан жеткен жок.
  • Туура эмес эстутум маалыматы (XC8-1787) avrxmega3 жана avrtiny түзмөктөр үчүн, avr өлчөмүндөгү программа окуу үчүн гана берилүүчү маалыматтар программанын эстутумунун ордуна RAMды керектеп жатканын кабарлаган.
  • Туура эмес программа эстутумун окуу (XC8-1783) Программа эстутуму маалыматтар дарек мейкиндигине жайгаштырылган жана PROGMEM макро/атрибутунун жардамы менен объекттерди аныктоочу түзмөктөр үчүн түзүлгөн долбоорлор бул объекттерди туура эмес даректен окуган болушу мүмкүн.
  • Атрибуттар менен ички ката (XC8-1773) Эгерде сиз көрсөткүч объекттерин көрсөткүчтүн аты менен шилтемеленген түрдүн ортосунда __at() же attribute() белгилери менен аныктасаңыз, ички ката кетти, мисалыample, char * __at(0x800150) cp; Эгер мындай код жолукса, азыр эскертүү берилет.
  • Негизги (XC8-1780, XC8-1767, XC8-1754) EEPROM өзгөрмөлөрүн колдонуу же конфигурациялоо прагмасынын жардамы менен сактагычтарды аныктоонун аткарылбай калуусу маалыматтардын туура эмес инициализациясына жана/же программанын аткарылышын блокадага алып келиши мүмкүн (башкы ишке киргизүү кодуна жеткенге чейин, ).
  • Кичинекей түзмөктөрдөгү сактагыч катасы (XC8-1778, XC8-1742) attiny4/5/9/10/20/40 түзмөктөрүнүн башкы файлдарында туура эмес сактагычтын узундугу көрсөтүлгөн, бул сактагычтарды аныктаган кодду курууга аракет кылып жатканда шилтеме берүүчү каталарга алып келди. .
  • Сегментация катасы (XC8-1777) Сегментациянын үзгүлтүксүз бузулушу оңдолду.
  • Ассемблер бузулушу (XC8-1761) avr-as ассемблери компилятор Ubuntu 18 астында иштетилгенде бузулушу мүмкүн.
  • Объекттер тазаланган жок (XC8-1752) Башталбаган статикалык сактоо узактыгы объекттери иштөө убактысынын баштоо коду менен тазаланбаган болушу мүмкүн.
  • Карама-каршы түзүлүштүн спецификациясы этибарга алынбай калды (XC8-1749) Түзмөктүн спецификациясынын бир нече варианттары колдонулганда жана башка түзмөктөрдү көрсөткөндө компилятор ката жаратпай жаткан.
  • Үймөк менен эс тутумдун бузулушу (XC8-1748) __heap_start символу туура эмес коюлган, натыйжада үймөк кадимки өзгөрмөлөр бузулушу мүмкүн.
  • Шилтемени көчүрүү катасы (XC8-1739) Шилтемени көчүрүү катасы коддо rjmp же rcчалууну камтыган максаттуу 4к байт аралыкта болгондо чыгышы мүмкүн.

Версия 2.00
Жок.

Белгилүү маселелер

Төмөндө компилятордун иштөөсүндөгү чектөөлөр бар. Бул жалпы коддоо чектөөлөрү, же колдонуучунун колдонмосунда камтылган маалыматтан четтөөлөр болушу мүмкүн. Аталышындагы кашаадагы энбелги(лер) бул маселенин байкоо базасындагы идентификациясы. Колдоо кызматына кайрылышыңыз керек болсо, бул пайдалуу болушу мүмкүн. Энбелгиси жок нерселер моди операцияны сүрөттөгөн жана биротоло күчүндө кала турган чектөөлөр болуп саналат.

MPLAB X IDE интеграциясы

  • MPLAB IDE интеграциясы Эгерде Compiler MPLAB IDEден колдонула турган болсо, анда Компиляторду орнотуудан мурун MPLAB IDE орнотуу керек.
  • Массивди оңдоо маалыматы (XC8-3157) Компилятор тарабынан чыгарылган мүчүлүштүктөрдү оңдоо маалыматы __memx дарек мейкиндигинде массивдер үчүн объекттин түрүн так жеткирбейт. Бул IDEде объектти байкоого жол бербейт.

Code Generation

  • Segfault with section-anchors опциясы (XC8-3045) Өзгөрмө аргумент тизмеси менен функцияларды аныктаган жана -fsection-anchors опциясын колдонгон программа компилятордун ички катасын козгогон болушу мүмкүн: Сегментация катасы
  • Мүчүлүштүктөрдү оңдоо маалыматы синхрондобой калды (XC8-2948) Шилтемелерди релаксациялоону оптималдаштыруу инструкцияларды кыскартканда (мисалы,ampинструкцияларга чакыруу), бөлүмдө бирден ашык кичирейтүү операциясы болгондо, дарек картасына булак сызыгы шайкештирилбей калышы мүмкүн. Төмөндө эксampле, фуга эки чалуу бар, алар салыштырмалуу чалууларга жумшалат.
  • PA эстутумун бөлүштүрүү катасы (XC8-2881) Процедуралык абстракциялоо оптимизаторлорун колдонууда, программа жеткиликтүү эстутумга туура келиши керек болсо да, коддун өлчөмү аппараттагы жеткиликтүү программалык эстутумдун көлөмүнө жакын болгондо шилтеме берүүчү эстутум бөлүштүрүү каталары жөнүндө кабарлашы мүмкүн. космос.
  • Анчалык акылдуу эмес Smart-IO (XC8-2872) Компилятордун smart-io функциясы snprintf функциясы үчүн жарактуу, бирок суб-оптималдуу кодду жаратат, эгерде const-data-in-progmem функциясы өчүрүлгөн болсо же аппаратта анын бардык функциялары бар болсо флэш маалымат эс тутумуна түшүрүлгөн.
  • Андан да азыраак акылдуу Smart-IO (XC8-2869) Компилятордун smart-io өзгөчөлүгү -flto жана -fno-builtin параметрлери тең колдонулганда жарактуу, бирок суб-оптималдуу кодду жаратат.
  • Оптималдуу эмес окуу үчүн гана берилиштерди жайгаштыруу (XC8-2849) Шилтемечи учурда APPCODE жана APPDATA эстутум бөлүмдөрүн, ошондой эле эстутум картасындагы [No-]Окуу-Жазуу бөлүмдөрүн билбейт. Натыйжада, шилтеме берүүчү эстутумдун жараксыз чөйрөсүндө окуу үчүн гана берилиштерди бөлүштүрүшү мүмкүн. Эгерде программадагы const-data-data-in-progmem функциясы иштетилсе, айрыкча, const-data-in-config-mapped-progmem өзгөчөлүгү иштетилген болсо, туура эмес жайгаштырылган берилиштердин ыктымалдыгы жогорулайт. Керек болсо, бул функциялар өчүрүлүшү мүмкүн.
  • Объект файлын иштетүү тартиби (XC8-2863) Объект файлдары шилтеме берүүчү тарабынан иштетиле турган тартиби процедуралык абстракцияны оптималдаштыруунун (-mpa опциясы) колдонулушуна жараша айырмаланышы мүмкүн. Бул бир нече модулдар боюнча начар функцияларды аныктаган кодго гана таасирин тийгизет.
  • Абсолюттук байланыштыргыч катасы (XC8-2777) Объект RAMдын башталышындагы даректе абсолюттук кылынганда жана инициализацияланбаган объекттер да аныкталганда, байланыштыргыч катасы пайда болушу мүмкүн.
  • Кыска ойготуу идентификаторлору (XC8-2775) ATA5700/2 түзмөктөрү үчүн PHID0/1 регистрлери туурасы 16 бит эмес, туурасы 32 бит катары гана аныкталат.
  • Символду чалуу учурунда байланыштыргычтын бузулушу (XC8-2758) Булак коду – Wl,–defsym шилтеме берүүчү опциясы аркылуу аныкталган символду чакырганда -mrelax драйвери опциясы колдонулса, байланыштыргыч бузулушу мүмкүн.
  • Туура эмес инициализация (XC8-2679) Кээ бир глобалдык/статикалык байт-өлчөмдүү объекттердин баштапкы маанилери маалымат эстутумунда жайгаштырылган жер менен өзгөрмөлөргө иштөө убагында кире турган жердин ортосунда дал келбестик бар.
  • Начар кыйыр функция чалуулары (XC8-2628) Кээ бир учурларда структуранын бир бөлүгү катары сакталган функция көрсөткүчү аркылуу жасалган функция чалуулары ишке ашпай калышы мүмкүн.
  • strtof он алтылык флоттор үчүн нөлдү кайтарат (XC8-2626) strtof() et al жана scanf() ж.б. китепкана функциялары ар дайым көрсөткүчтү нөлгө көрсөтпөгөн он алтылык калкыма чекиттик санды которот. Мисалы үчүнample: strtof(“0x1”, &endptr); 0 эмес, 1 маанисин кайтарат.
  • Стек кеңешчисинин так эмес билдирүүсү (XC8-2542, XC8-2541) Кээ бир учурларда, рекурсия же аныкталбаган стек (мүмкүн alloca() колдонуусу аркылуу) жөнүндө стек кеңешчиси эскертүүсү чыгарылбайт.
  • Кайталанма үзгүлтүккө учуроо коду (XC8-2421) Бирден ашык үзгүлтүккө учуратуу функциясы бирдей денеге ээ болгон учурда, компилятор бир үзгүлтүккө учуратуу функциясын экинчисин чакырышы мүмкүн. Бул бардык чалуулар менен жабылган регистрлердин кереги жок сакталып калышына алып келет жана үзгүлтүктөр учурдагы үзгүлтүккө учураткычтын эпилогу иштей электе эле иштетилет, бул коддун бузулушуна алып келиши мүмкүн.
  • Жараксыз DFP жолу менен туура эмес чыгаруу (XC8-2376) Эгерде компилятор жараксыз DFP жолу менен чакырылса жана тандалган түзмөк үчүн "спец" файлы бар болсо, компилятор жетишпеген түзмөктүн үй-бүлөлүк топтомун билдирбейт жана анын ордуна "спец" тандайт файл, анда жараксыз жыйынтыкка алып келиши мүмкүн. "Spec" файлдары бөлүштүрүлгөн DFP менен жаңыланбашы мүмкүн жана алар компилятордун ички сыналышы менен гана колдонууга арналган.
  • Эс тутумдун кабатталышы аныкталбай жатат (XC8-1966) Компилятор дарек боюнча абсолюттук жасалган объекттердин (__at() аркылуу) жана __section() спецификасын колдонгон жана ошол эле дарекке байланышкан башка объекттердин эстутумунун кайталанышын аныктабай жатат.
  • Китепкана функциялары жана __memx (XC8-1763) дарек мейкиндигинде аргументи бар libgcc float деп аталган функциялар иштебей калышы мүмкүн. Көңүл буруңуз, китепкананын процедуралары кээ бир C операторлорунан чакырылат, мисалы, мисалыample, төмөнкү код таасир этет: return regFloatVar > memxFloatVar;
  • Limited libgcc ишке ашыруу (AVRTC-731) ATTiny4/5/9/10/20/40 өнүмдөрү үчүн libgccдеги стандарттык C / Math китепканасын ишке ашыруу өтө чектелген же жок.
  • Программанын эс тутумунун чектөөлөрү (AVRTC-732) 128 кб жогору программалык эстутум сүрөттөрү инструменттердин тизмеги тарабынан колдоого алынат; бирок, -mrelax опциясы колдонулганда, талап кылынган функциянын бүдөмүктөрүн түзүүнүн ордуна, релаксациясыз жана пайдалуу ката кабарысыз шилтемени токтотуунун белгилүү учурлары бар.
  • Аты мейкиндигине чектөөлөр (AVRTC-733) Аты аталган дарек мейкиндиктери, колдонуучунун колдонмосунун Атайын Тип Квалификациялары бөлүмүндө айтылган чектөөлөргө ылайык, инструменттердин тизмеги тарабынан колдоого алынат.
  • Убакыт алкактары The китепкана функциялары GMTти болжолдойт жана жергиликтүү убакыт алкактарын колдобойт, ошондуктан localtime() gmtime() менен бирдей убакытты кайтарат, мисалы,ample.

Документтер / Ресурстар

MICROCHIP XC8 C Compiler Version 2.45 AVR MCU үчүн релиз эскертүүлөрү [pdf] Instructions
AVR MCU, XC8 C, XC8 C Compiler Version 2.45 AVR MCU үчүн релиз эскертүүлөрү, Compiler Version 2.45 AVR MCU үчүн релиз эскертүүлөрү, AVR MCU үчүн 2.45 релиз эскертүүлөрү, AVR MCU үчүн релиз эскертүүлөрү, AVR MCU, AVR MCU үчүн эскертүүлөр

Шилтемелер

Комментарий калтырыңыз

Сиздин электрондук почта дарегиңиз жарыяланбайт. Талап кылынган талаалар белгиленген *