ຊອບແວສັງລວມ MICROCHIP MPLAB XC8 C
ເອກະສານນີ້ມີຂໍ້ມູນສຳຄັນທີ່ກ່ຽວຂ້ອງກັບເຄື່ອງສັງລວມ MPLAB XC8 C ເມື່ອຕັ້ງເປົ້າໝາຍອຸປະກອນໄມໂຄຣຊິບ AVR.
ກະລຸນາອ່ານມັນກ່ອນທີ່ຈະແລ່ນຊອບແວນີ້. ເບິ່ງບັນທຶກການປ່ອຍຕົວລວບລວມຂໍ້ມູນ MPLAB XC8 ສໍາລັບເອກະສານ PIC ຖ້າທ່ານໃຊ້ເຄື່ອງລວບລວມຂໍ້ມູນສໍາລັບອຸປະກອນ PIC 8-BIT.
ເກີນview
ແນະນຳ
ການປ່ອຍຕົວສັງລວມຂອງ Microchip MPLAB® XC8 C ນີ້ມີຄຸນສົມບັດໃໝ່ຫຼາຍຢ່າງ, ແກ້ໄຂຂໍ້ບົກພ່ອງ ແລະ ການຮອງຮັບອຸປະກອນໃໝ່.
ວັນທີສ້າງ
ວັນທີສ້າງຢ່າງເປັນທາງການຂອງສະບັບ compiler ນີ້ແມ່ນວັນທີ 3 ກໍລະກົດ 2022.
ລຸ້ນກ່ອນ
MPLAB XC8 C compiler ເວີຊັ່ນກ່ອນໜ້ານີ້ແມ່ນ 2.39, ເປັນຕົວສັງລວມດ້ານຄວາມປອດໄພທີ່ໃຊ້ໄດ້, ສ້າງຂຶ້ນໃນວັນທີ 27 ມັງກອນ 2022. ຄອມພີວເຊີມາດຕະຖານກ່ອນໜ້ານີ້ແມ່ນລຸ້ນ 2.36, ສ້າງຂຶ້ນໃນວັນທີ 27 ມັງກອນ 2022.
ຄູ່ມືຄວາມປອດໄພໃນການເຮັດວຽກ
ຄູ່ມືຄວາມປອດໄພທີ່ໃຊ້ໄດ້ສໍາລັບ MPLAB XC compilers ແມ່ນມີຢູ່ໃນຊຸດເອກະສານໃນເວລາທີ່ທ່ານຊື້ໃບອະນຸຍາດຄວາມປອດໄພທີ່ເປັນປະໂຫຍດ.
ໃບອະນຸຍາດອົງປະກອບ ແລະສະບັບ
MPLAB® XC8 C Compiler ສໍາລັບເຄື່ອງມື AVR MCUs ແມ່ນລາຍລັກອັກສອນແລະການແຈກຢາຍພາຍໃຕ້ໃບອະນຸຍາດສາທາລະນະທົ່ວໄປ GNU (GPL) ຊຶ່ງຫມາຍຄວາມວ່າລະຫັດແຫຼ່ງຂອງຕົນແມ່ນແຈກຢາຍຢ່າງເສລີແລະມີໃຫ້ສາທາລະນະ. ລະຫັດແຫຼ່ງຂອງເຄື່ອງມືພາຍໃຕ້ GNU GPL ອາດຈະຖືກດາວໂຫຼດແຍກຕ່າງຫາກຈາກ Microchip's webເວັບໄຊ. ທ່ານອາດຈະອ່ານ GNU GPL ໃນ file ຕັ້ງຊື່ຢູ່ໃນໄດເລກະທໍລີຍ່ອຍຂອງໄດເລກະທໍລີການຕິດຕັ້ງຂອງທ່ານ. ການສົນທະນາທົ່ວໄປກ່ຽວກັບຫຼັກການພື້ນຖານຂອງ GPL ອາດຈະພົບເຫັນຢູ່ທີ່ນີ້. ລະຫັດສະຫນັບສະຫນູນທີ່ສະຫນອງໃຫ້ສໍາລັບ header files, linker scripts, ແລະ runtime libraries ເປັນລະຫັດທີ່ເປັນເຈົ້າຂອງ ແລະບໍ່ໄດ້ກວມເອົາພາຍໃຕ້ GPL.
compiler ນີ້ແມ່ນການຈັດຕັ້ງປະຕິບັດ GCC ເວີຊັນ 5.4.0, binutils ເວີຊັນ 2.26, ແລະໃຊ້ avr-libc ເວີຊັນ 2.0.0.
ຄວາມຕ້ອງການລະບົບ
MPLAB XC8 C compiler ແລະຊອບແວໃບອະນຸຍາດທີ່ມັນໃຊ້ແມ່ນສາມາດໃຊ້ໄດ້ສໍາລັບລະບົບປະຕິບັດງານທີ່ຫລາກຫລາຍ, ລວມທັງຮຸ່ນ 64-bit ຂອງຕໍ່ໄປນີ້: ສະບັບມືອາຊີບຂອງ Microsoft Windows 10; Ubuntu 18.04; ແລະ macOS 10.15.5. Binaries ສໍາລັບ Windows ໄດ້ຖືກເຊັນລະຫັດ. Binaries ສໍາລັບ mac OS ໄດ້ຖືກເຊັນລະຫັດ ແລະ notarized.
ຖ້າທ່ານກໍາລັງແລ່ນເຄື່ອງແມ່ຂ່າຍໃບອະນຸຍາດເຄືອຂ່າຍ, ພຽງແຕ່ຄອມພິວເຕີທີ່ມີລະບົບປະຕິບັດການທີ່ສະຫນັບສະຫນູນໂດຍ compilers ອາດຈະຖືກນໍາໃຊ້ເພື່ອໂຮດເຄື່ອງແມ່ຂ່າຍໃບອະນຸຍາດ. ໃນຖານະຂອງ xclm ຮຸ່ນ 2.0, ເຄື່ອງແມ່ຂ່າຍໃບອະນຸຍາດເຄືອຂ່າຍສາມາດຖືກຕິດຕັ້ງຢູ່ໃນແພລະຕະຟອມ Microsoft Windows Server, ແຕ່ເຄື່ອງແມ່ຂ່າຍໃບອະນຸຍາດບໍ່ຈໍາເປັນຕ້ອງດໍາເນີນການກັບເວີຊັນເຊີຟເວີຂອງລະບົບປະຕິບັດການ.
ອຸປະກອນທີ່ຮອງຮັບ
compiler ນີ້ສະຫນັບສະຫນູນອຸປະກອນ 8-bit AVR MCU ທັງຫມົດທີ່ຮູ້ຈັກໃນເວລາອອກ. ເບິ່ງ (ຢູ່ໃນໄດເລກະທໍລີ doc ຂອງຜູ້ລວບລວມຂໍ້ມູນ) ສໍາລັບບັນຊີລາຍຊື່ຂອງອຸປະກອນທີ່ສະຫນັບສະຫນູນທັງຫມົດ. ເຫຼົ່ານີ້ files ຍັງລາຍຊື່ການຕັ້ງຄ່າບິດການຕັ້ງຄ່າສໍາລັບແຕ່ລະອຸປະກອນ.
ສະບັບ ແລະ ການຍົກລະດັບໃບອະນຸຍາດ
ຕົວສັງລວມ MPLAB XC8 ສາມາດເປີດໃຊ້ໄດ້ເປັນຜະລິດຕະພັນທີ່ມີໃບອະນຸຍາດ (PRO) ຫຼືບໍ່ມີໃບອະນຸຍາດ (ຟຣີ). ທ່ານຈໍາເປັນຕ້ອງໄດ້ຊື້ກະແຈເປີດໃຊ້ງານເພື່ອໃຫ້ອະນຸຍາດຄອມພີວເຕີຂອງເຈົ້າ. ໃບອະນຸຍາດອະນຸຍາດໃຫ້ມີລະດັບການເພີ່ມປະສິດທິພາບສູງກວ່າເມື່ອທຽບກັບຜະລິດຕະພັນຟຣີ. ການລວບລວມຂໍ້ມູນທີ່ບໍ່ມີໃບອະນຸຍາດສາມາດດໍາເນີນການໄດ້ຢ່າງບໍ່ມີກໍານົດໂດຍບໍ່ມີໃບອະນຸຍາດ.
ຄອມພີວເຊີຄວາມປອດໄພຟັງຊັນ MPLAB XC8 ຕ້ອງໄດ້ຮັບການເປີດໃຊ້ງານດ້ວຍໃບອະນຸຍາດຄວາມປອດໄພທີ່ໃຊ້ໄດ້ທີ່ຊື້ຈາກໄມໂຄຊິບ. compiler ຈະບໍ່ດໍາເນີນການໂດຍບໍ່ມີໃບອະນຸຍາດນີ້. ເມື່ອເປີດໃຊ້ແລ້ວ, ທ່ານສາມາດເລືອກລະດັບການເພີ່ມປະສິດທິພາບໃດໆແລະນໍາໃຊ້ຄຸນສົມບັດການລວບລວມຂໍ້ມູນທັງຫມົດ. ລຸ້ນນີ້ຂອງ MPLAB XC Functional Safety Compiler ຮອງຮັບ Network Server License.
ເບິ່ງເອກະສານການຕິດຕັ້ງ ແລະໃບອະນຸຍາດ MPLAB XC C Compilers (DS50002059) ສໍາລັບຂໍ້ມູນກ່ຽວກັບປະເພດໃບອະນຸຍາດ ແລະການຕິດຕັ້ງ compiler ທີ່ມີໃບອະນຸຍາດ.
ການຕິດຕັ້ງແລະການເປີດໃຊ້ງານ
ເບິ່ງພາກສ່ວນບັນຫາການຍ້າຍຖິ່ນຖານ ແລະຂໍ້ຈຳກັດສຳລັບຂໍ້ມູນສຳຄັນກ່ຽວກັບຕົວຈັດການໃບອະນຸຍາດຫຼ້າສຸດທີ່ລວມຢູ່ໃນຄອມພີວເຕີນີ້.
ຖ້າໃຊ້ MPLAB IDE, ໃຫ້ແນ່ໃຈວ່າຈະຕິດຕັ້ງ MPLAB X IDE ເວີຊັນ 5.0 ຫຼືໃໝ່ກວ່ານັ້ນ ກ່ອນທີ່ຈະຕິດຕັ້ງເຄື່ອງມືນີ້. ອອກຈາກ IDE ກ່ອນທີ່ຈະຕິດຕັ້ງ compiler. ແລ່ນ .exe (Windows), .run (Linux) ຫຼື app (macOS) compiler installer application, eg XC8-1.00.11403-windows.exe ແລະປະຕິບັດຕາມທິດທາງໃນຫນ້າຈໍ.
ໄດເລກະທໍລີການຕິດຕັ້ງເລີ່ມຕົ້ນແມ່ນແນະນໍາ. ຖ້າທ່ານກໍາລັງໃຊ້ Linux, ທ່ານຕ້ອງຕິດຕັ້ງ compiler ໂດຍໃຊ້ terminal ແລະຈາກບັນຊີຮາກ. ຕິດຕັ້ງໂດຍໃຊ້ບັນຊີ macOS ທີ່ມີສິດທິຂອງຜູ້ເບິ່ງແຍງລະບົບ.
ຕອນນີ້ການເປີດໃຊ້ງານໄດ້ຖືກປະຕິບັດແຍກຕ່າງຫາກເພື່ອຕິດຕັ້ງ. ເບິ່ງຕົວຈັດການໃບອະນຸຍາດເອກະສານສໍາລັບMPLAB® XC C Compilers (DS52059) ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ຖ້າທ່ານເລືອກທີ່ຈະດໍາເນີນການລວບລວມຂໍ້ມູນພາຍໃຕ້ໃບອະນຸຍາດການປະເມີນຜົນ, ຕອນນີ້ທ່ານຈະໄດ້ຮັບຄໍາເຕືອນໃນລະຫວ່າງການລວບລວມຂໍ້ມູນໃນເວລາທີ່ທ່ານຢູ່ໃນ 14 ມື້ຫຼັງຈາກສິ້ນສຸດໄລຍະເວລາການປະເມີນຜົນຂອງທ່ານ. ການເຕືອນໄພດຽວກັນແມ່ນອອກຖ້າທ່ານພາຍໃນ 14 ມື້ຫຼັງຈາກສິ້ນສຸດການເປັນສະມາຊິກ HPA ຂອງທ່ານ.
ເຄື່ອງແມ່ຂ່າຍໃບອະນຸຍາດເຄືອຂ່າຍ XC ແມ່ນຕົວຕິດຕັ້ງແຍກຕ່າງຫາກແລະບໍ່ໄດ້ລວມຢູ່ໃນຕົວຕິດຕັ້ງ compiler ຜູ້ໃຊ້ດຽວ.
ຕອນນີ້ຜູ້ຈັດການໃບອະນຸຍາດ XC ຮອງຮັບການໂຣມມິງຂອງໃບອະນຸຍາດເຄືອຂ່າຍລອຍ. ແນໃສ່ຜູ້ໃຊ້ມືຖື, ຄຸນສົມບັດນີ້ອະນຸຍາດໃຫ້ໃບອະນຸຍາດລອຍຕົວເພື່ອປິດເຄືອຂ່າຍເປັນເວລາສັ້ນໆ. ການນໍາໃຊ້ຄຸນສົມບັດນີ້, ທ່ານສາມາດຕັດການເຊື່ອມຕໍ່ຈາກເຄືອຂ່າຍແລະຍັງໃຊ້ MPLAB XC compiler ຂອງທ່ານ. ເບິ່ງໂຟນເດີເອກະສານຂອງການຕິດຕັ້ງ XCLM ສໍາລັບຄຸນສົມບັດນີ້. MPLAB X IDE ປະກອບມີປ່ອງຢ້ຽມໃບອະນຸຍາດ (ເຄື່ອງມື > ໃບອະນຸຍາດ) ເພື່ອຈັດການການໂຣມມິງດ້ວຍສາຍຕາ.
ແກ້ໄຂບັນຫາການຕິດຕັ້ງ
ຖ້າທ່ານປະສົບກັບຄວາມຫຍຸ້ງຍາກໃນການຕິດຕັ້ງ compiler ພາຍໃຕ້ລະບົບປະຕິບັດການ Windows, ລອງຄໍາແນະນໍາຕໍ່ໄປນີ້.
- ດໍາເນີນການຕິດຕັ້ງເປັນຜູ້ບໍລິຫານ.
- ຕັ້ງຄ່າການອະນຸຍາດຂອງແອັບພລິເຄຊັນຕິດຕັ້ງເປັນ 'ການຄວບຄຸມເຕັມ'. (ຄລິກຂວາທີ່ file, ເລືອກຄຸນສົມບັດ, ແຖບຄວາມປອດໄພ, ເລືອກຜູ້ໃຊ້, ແກ້ໄຂ.)
- ຕັ້ງການອະນຸຍາດຂອງ temp folder ເປັນ “Full Control!
ເພື່ອກໍານົດທີ່ຕັ້ງຂອງໂຟເດີ temp, ພິມ %temp% ໃສ່ຄໍາສັ່ງ Run (Windows logo key + R). ນີ້ຈະເປີດ a file ກ່ອງໂຕ້ຕອບ explorer ສະແດງໃຫ້ເຫັນໄດເລກະທໍລີນັ້ນແລະຈະຊ່ວຍໃຫ້ທ່ານສາມາດກໍານົດເສັ້ນທາງຂອງໂຟນເດີນັ້ນ.
ເອກະສານປະກອບ
ຄໍາແນະນໍາຂອງຜູ້ໃຊ້ compiler ສາມາດເປີດໄດ້ຈາກຫນ້າ HTML ທີ່ເປີດຢູ່ໃນຕົວທ່ອງເວັບຂອງທ່ານໃນເວລາທີ່ຄລິກໃສ່ປຸ່ມການຊ່ວຍເຫຼືອສີຟ້າໃນ dashboard MPLAB X IDE, ຕາມທີ່ລະບຸໄວ້ໃນ screenshot.
ຖ້າທ່ານກໍາລັງສ້າງສໍາລັບເປົ້າຫມາຍ AVR 8-bit, ຄູ່ມືຜູ້ໃຊ້ MPLAB® XC8 C Compiler ສໍາລັບ AVR® MCU ປະກອບມີຂໍ້ມູນກ່ຽວກັບທາງເລືອກ compiler ເຫຼົ່ານັ້ນແລະລັກສະນະຕ່າງໆທີ່ໃຊ້ກັບສະຖາປັດຕະຍະກໍານີ້.
ການຊ່ວຍເຫຼືອລູກຄ້າ
ໄມໂຄຣຊິບຍິນດີຕ້ອນຮັບລາຍງານຂໍ້ບົກພ່ອງ, ຄຳແນະນຳ ຫຼືຄຳຄິດເຫັນກ່ຽວກັບສະບັບຄອມພີວເລີນີ້. ກະລຸນາຊີ້ນໍາການລາຍງານ bug ຫຼືການຮ້ອງຂໍຄຸນນະສົມບັດໂດຍຜ່ານລະບົບການສະຫນັບສະຫນູນ.
ການປັບປຸງເອກະສານ
ສໍາລັບເອກະສານ MPLAB XC8 ສະບັບອອນໄລນ໌ ແລະຫຼ້າສຸດ, ກະລຸນາເຂົ້າໄປເບິ່ງເອກະສານທາງວິຊາການອອນໄລນ໌ຂອງ Microchip webເວັບໄຊ.
ເອກະສານ AVR ໃໝ່ ຫຼືສະບັບປັບປຸງໃນລຸ້ນນີ້:
- ແຈ້ງການລິຂະສິດ MUSL
- ການຕິດຕັ້ງແລະໃບອະນຸຍາດ MPLAB XC C Compilers (ການປັບປຸງ M)
- MPLAB XC8 User!s Guide for Embedded Engineers – AVR MCUs (revision A)
- ຄູ່ມືຜູ້ໃຊ້ MPLAB XC8 C Compiler!s ສໍາລັບ AVR MCU (ການດັດແກ້ F)
- ຄູ່ມືອ້າງອີງຫ້ອງສະໝຸດມາດຕະຖານໄມໂຄຊິບ (ສະບັບ B)
ຄູ່ມືອ້າງອິງມາດຕະຖານຫ້ອງສະໝຸດ Microchip Unified ອະທິບາຍເຖິງພຶດຕິກຳຂອງ ແລະການໂຕ້ຕອບກັບໜ້າທີ່ທີ່ກຳນົດໄວ້ໂດຍຫ້ອງສະໝຸດມາດຕະຖານໄມໂຄຊິບ ຮວມເຖິງການນຳໃຊ້ປະເພດຫ້ອງສະໝຸດ ແລະມະຫາພາກ. ບາງຂໍ້ມູນນີ້ເຄີຍມີຢູ່ໃນຄູ່ມືຜູ້ໃຊ້ MPLAB® XC8 C Compiler!s ສໍາລັບ AVR® MCU. ຂໍ້ມູນຫ້ອງສະໝຸດສະເພາະອຸປະກອນຍັງມີຢູ່ໃນຄູ່ມື compiler ນີ້.
ຖ້າທ່ານພຽງແຕ່ເລີ່ມຕົ້ນດ້ວຍອຸປະກອນ 8-bit ແລະ MPLAB XC8 C Compiler, MPLAB® XC8 User!s Guide for Embedded Engineers – AVR® MCUs (DS50003108) ມີຂໍ້ມູນກ່ຽວກັບການຕັ້ງຄ່າໂຄງການໃນ MPLAB X IDE ແລະການຂຽນລະຫັດ. ສໍາລັບໂຄງການ MPLAB XC8 C ທໍາອິດຂອງທ່ານ. ຄູ່ມືນີ້ໄດ້ຖືກແຈກຢາຍໃນປັດຈຸບັນກັບ compiler.
ຄູ່ມືຜູ້ໃຊ້ຂອງ Hamate ໄດ້ຖືກລວມເຂົ້າໃນໄດເລກະທໍລີ docs ໃນການປ່ອຍນີ້. ຄູ່ມືນີ້ແມ່ນມີຈຸດປະສົງສໍາລັບຜູ້ທີ່ແລ່ນ Hamate ເປັນແອັບພລິເຄຊັນດຽວ.
ມີຫຍັງໃໝ່
ຕໍ່ໄປນີ້ແມ່ນລັກສະນະເປົ້າຫມາຍ AVR ໃຫມ່ທີ່ compiler ສະຫນັບສະຫນູນໃນປັດຈຸບັນ. ໝາຍເລກເວີຊັນໃນຫົວຂໍ້ຍ່ອຍສະແດງເຖິງລຸ້ນ compiler ທຳອິດເພື່ອຮອງຮັບຄຸນສົມບັດທີ່ປະຕິບັດຕາມ.
ລຸ້ນ 2.40
ຮອງຮັບອຸປະກອນໃໝ່ ດຽວນີ້ການຮອງຮັບມີໃຫ້ສຳລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32, AVR64.
ການປັບປຸງຂັ້ນຕອນການ abstraction ເຄື່ອງມືການເພີ່ມປະສິດທິພາບການ abstraction (PA) ຂັ້ນຕອນໄດ້ຖືກປັບປຸງເພື່ອໃຫ້ລະຫັດທີ່ມີຄໍາແນະນໍາການເອີ້ນຟັງຊັນ (ໂທຫາການເອີ້ນຄືນ) ) ສາມາດອະທິບາຍໄດ້. ນີ້ຈະເກີດຂຶ້ນພຽງແຕ່ຖ້າ stack ບໍ່ໄດ້ຖືກນໍາໃຊ້ເພື່ອຜ່ານ arguments ໄປຫາຫຼືໄດ້ຮັບຄ່າກັບຄືນຈາກຟັງຊັນ. stack ຖືກນໍາໃຊ້ໃນເວລາທີ່ໂທຫາຟັງຊັນທີ່ມີບັນຊີລາຍຊື່ argument ຕົວແປຫຼືໃນເວລາທີ່ໂທຫາຟັງຊັນທີ່ເອົາ arguments ຫຼາຍກ່ວາມີ registers ກໍານົດສໍາລັບຈຸດປະສົງນີ້. ຄຸນສົມບັດນີ້ສາມາດຖືກປິດໃຊ້ງານໄດ້ໂດຍໃຊ້ຕົວເລືອກການເອີ້ນແບບ mono-pa-outline-calls, ຫຼືຂັ້ນຕອນການ abstraction ສາມາດຖືກປິດການໃຊ້ງານທັງຫມົດສໍາລັບວັດຖຸ. file ຫຼືປະຕິບັດຫນ້າທີ່ໂດຍການນໍາໃຊ້ -monk-pa-on-file ແລະ -mo.-pa-on-function ຕາມລໍາດັບ, ຫຼືໂດຍການນໍາໃຊ້ຄຸນລັກສະນະ nipa ( nipa specifier) ເລືອກດ້ວຍຟັງຊັນ
code coverage macro ໃນປັດຈຸບັນ compiler ກໍານົດ macro __CODECOV ຖ້າຫາກວ່າທາງເລືອກ mcodecov ທີ່ຖືກຕ້ອງຖືກລະບຸ.
ທາງເລືອກການຈອງຫນ່ວຍຄວາມຈໍາ ຕອນນີ້ໄດເວີ xc8-cc ຈະຍອມຮັບ -mreserve=space@start: ທາງເລືອກສິ້ນສຸດເມື່ອສ້າງເປົ້າໝາຍ AVR. ຕົວເລືອກນີ້ສະຫງວນຂອບເຂດຄວາມຊົງຈໍາທີ່ລະບຸໄວ້ໃນພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂອງຂໍ້ມູນຫຼືໂຄງການ, ປ້ອງກັນບໍ່ໃຫ້ຕົວເຊື່ອມຕໍ່ຈາກການເພີ່ມລະຫັດຫຼືວັດຖຸໃນພື້ນທີ່ນີ້.
IO ທີ່ສະຫຼາດກວ່າ ໄດ້ມີການປັບປຸງຫຼາຍຢ່າງຕໍ່ກັບຟັງຊັນ IO ອັດສະລິຍະ, ລວມທັງການປັບປ່ຽນທົ່ວໄປຕໍ່ກັບລະຫັດຫຼັກ printf, ປະຕິບັດຕົວກໍານົດການແປງ %n ໃຫ້ເປັນຕົວແປທີ່ເປັນເອກະລາດ, ການເຊື່ອມໂຍງໃນ vararg pop routines ຕາມຄວາມຕ້ອງການ, ການນໍາໃຊ້ປະເພດຂໍ້ມູນທີ່ສັ້ນກວ່າທີ່ເປັນໄປໄດ້ສໍາລັບການຈັດການ IO function arguments. , ແລະປັດໄຈທົ່ວໄປລະຫັດໃນຄວາມກວ້າງຂອງພາກສະຫນາມແລະຄວາມແມ່ນຍໍາການຈັດການ. ນີ້ສາມາດສົ່ງຜົນໃຫ້ລະຫັດທີ່ສໍາຄັນແລະການປະຫຍັດຂໍ້ມູນ, ເຊັ່ນດຽວກັນກັບການເພີ່ມຄວາມໄວການປະຕິບັດຂອງ IO.
ເວີຊັ່ນ 2.39 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ໃບອະນຸຍາດເຊີບເວີເຄືອຂ່າຍ ລຸ້ນນີ້ຂອງ 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) ທີ່ລະບຸວ່າພາກສ່ວນ 32k ຂອງໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມໃດຈະຖືກສ້າງແຜນທີ່ໃສ່ໃນໜ່ວຍຄວາມຈຳຂໍ້ມູນ. ທາງເລືອກໃຫມ່ - mconst-data-in-config-mapped-proem ສາມາດໃຊ້ເພື່ອໃຫ້ຕົວເຊື່ອມຕໍ່ວາງຂໍ້ມູນທີ່ມີຄຸນວຸດທິທັງຫມົດໃນສ່ວນ 32k ແລະເລີ່ມຕົ້ນການລົງທະບຽນ SFR ທີ່ກ່ຽວຂ້ອງໂດຍອັດຕະໂນມັດເພື່ອຮັບປະກັນວ່າຂໍ້ມູນນີ້ຖືກແຜນທີ່ເຂົ້າໄປໃນພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ. , ບ່ອນທີ່ມັນຈະໄດ້ຮັບການເຂົ້າເຖິງປະສິດທິພາບຫຼາຍ.
ຫ້ອງສະໝຸດມາດຕະຖານໄມໂຄຊິບ ໂປຣແກຣມສັງລວມ MPLAB XC ທັງໝົດຈະແບ່ງປັນຫ້ອງສະໝຸດມາດຕະຖານໄມໂຄຊິບ, ເຊິ່ງມີໃຫ້ພ້ອມກັບລຸ້ນ MPLAB XC8 ນີ້. ຄູ່ມືຜູ້ໃຊ້ MPLAB® XC8 C Compiler/ຫຼື AVR® MCU ບໍ່ລວມເອົາເອກະສານສຳລັບຟັງຊັນມາດຕະຖານເຫຼົ່ານີ້ອີກຕໍ່ໄປ. ຂໍ້ມູນນີ້ສາມາດພົບໄດ້ໃນ ຄູ່ມືການອ້າງອິງມາດຕະຖານຫ້ອງສະໝຸດ Microchip Unified Standard. ໃຫ້ສັງເກດວ່າບາງຫນ້າທີ່ກໍານົດໄວ້ກ່ອນຫນ້ານີ້ໂດຍ avr-libc ແມ່ນບໍ່ມີຕໍ່ໄປອີກແລ້ວ. (ເບິ່ງ Librar): '. ການທໍາງານ...)
Smart IO ເປັນສ່ວນຫນຶ່ງຂອງຫ້ອງສະຫມຸດປະສົມປະສານໃຫມ່, ຟັງຊັນ IO ໃນຄອບຄົວພິມແລະສະແກນໄດ້ຖືກສ້າງຂື້ນເອງໃນແຕ່ລະການກໍ່ສ້າງ, ໂດຍອີງໃສ່ວິທີການນໍາໃຊ້ຫນ້າທີ່ເຫຼົ່ານີ້ຢູ່ໃນໂຄງການ. ນີ້ສາມາດຫຼຸດລົງຢ່າງຫຼວງຫຼາຍຊັບພະຍາກອນທີ່ໃຊ້ໂດຍໂຄງການ.
ທາງເລືອກການຊ່ວຍເຫຼືອ IO Smart ເມື່ອວິເຄາະການໂທຫາຟັງຊັນ IO ອັດສະລິຍະ (ເຊັ່ນ printf () ຫຼື scanf ()), ຄອມພີວເຕີບໍ່ສາມາດກໍານົດໄດ້ຕະຫຼອດເວລາຈາກສະຕຣິງຮູບແບບຫຼື infer ຈາກ arguments ຕົວກໍານົດການແປງທີ່ຕ້ອງການໂດຍການໂທຫາ. ກ່ອນຫນ້ານີ້, compiler ສະເຫມີຈະບໍ່ສົມມຸດຕິຖານແລະຮັບປະກັນວ່າຫນ້າທີ່ IO ທີ່ມີປະສິດຕິຜົນຢ່າງສົມບູນໄດ້ຖືກເຊື່ອມໂຍງເຂົ້າໄປໃນຮູບພາບຂອງໂປຼແກຼມສຸດທ້າຍ. ທາງເລືອກໃຫມ່ - msmart-io-format=fmt ໄດ້ຖືກເພີ່ມເພື່ອໃຫ້ compiler ແທນທີ່ຈະຖືກແຈ້ງໃຫ້ໂດຍຜູ້ໃຊ້ຂອງຕົວກໍານົດການແປງທີ່ໃຊ້ໂດຍຟັງຊັນ IO ອັດສະລິຍະທີ່ມີການນໍາໃຊ້ທີ່ບໍ່ຊັດເຈນ, ປ້ອງກັນບໍ່ໃຫ້ IO ປົກກະຕິຍາວເກີນໄປຈາກການເຊື່ອມໂຍງ. (ເບິ່ງ smart-io-format Option ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.)
ການວາງພາກສ່ວນທີ່ກໍາຫນົດເອງ ກ່ອນຫນ້ານີ້, ທາງເລືອກ -Wl, –section-start ພຽງແຕ່ວາງສ່ວນທີ່ລະບຸໄວ້ໃນທີ່ຢູ່ທີ່ຮ້ອງຂໍເມື່ອຕົວເຊື່ອມຕໍ່ກໍານົດສ່ວນຜົນຜະລິດທີ່ມີຊື່ດຽວກັນ. ເມື່ອນັ້ນບໍ່ແມ່ນກໍລະນີ, ພາກສ່ວນໄດ້ຖືກຈັດໃສ່ຢູ່ໃນທີ່ຢູ່ທີ່ເລືອກໂດຍຕົວເຊື່ອມຕໍ່ແລະທາງເລືອກແມ່ນຖືກລະເວັ້ນຢ່າງຈໍາເປັນ. ໃນປັດຈຸບັນທາງເລືອກຈະໄດ້ຮັບກຽດສໍາລັບທຸກພາກສ່ວນທີ່ກໍາຫນົດເອງ, ເຖິງແມ່ນວ່າຕົວເຊື່ອມຕໍ່ບໍ່ໄດ້ກໍານົດສ່ວນ. ຢ່າງໃດກໍຕາມ, ໃຫ້ສັງເກດວ່າສໍາລັບພາກສ່ວນມາດຕະຖານ, ເຊັ່ນ . ຂໍ້ຄວາມ, . bss ຫຼື . ຂໍ້ມູນ, ຜູ້ຈັດສັນທີ່ເຫມາະສົມທີ່ສຸດຈະຍັງຄົງມີການຄວບຄຸມຢ່າງເຕັມທີ່ກ່ຽວກັບການບັນຈຸເຂົ້າຮຽນຂອງເຂົາເຈົ້າ, ແລະທາງເລືອກຈະບໍ່ມີຜົນກະທົບ. ໃຊ້ -Wl, -Tsection=add ທາງເລືອກ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນຄູ່ມືຂອງຜູ້ໃຊ້.
ລຸ້ນ 2.32
Stack ຄໍາແນະນໍາ ສາມາດໃຊ້ໄດ້ກັບໃບອະນຸຍາດ compiler PRO, ຄຸນນະສົມບັດຄໍາແນະນໍາ stack ຂອງ compiler ສາມາດຖືກນໍາໃຊ້ເພື່ອຄາດຄະເນຄວາມເລິກສູງສຸດຂອງ stack ໃດໆທີ່ໃຊ້ໂດຍໂຄງການ. ມັນກໍ່ສ້າງແລະວິເຄາະເສັ້ນສະແດງການເອີ້ນຂອງໂປລແກລມ, ກໍານົດການນໍາໃຊ້ stack ຂອງແຕ່ລະຫນ້າທີ່, ແລະຜະລິດບົດລາຍງານ, ເຊິ່ງຄວາມເລິກຂອງ stacks ທີ່ໃຊ້ໂດຍໂຄງການສາມາດ inferred. ຄຸນສົມບັດນີ້ຖືກເປີດໃຊ້ຜ່ານຕົວເລືອກເສັ້ນຄໍາສັ່ງ -mchp-stack-usage. ບົດສະຫຼຸບຂອງການໃຊ້ stack ແມ່ນພິມອອກຫຼັງຈາກການປະຕິບັດ. ບົດລາຍງານ stack ລະອຽດແມ່ນມີຢູ່ໃນແຜນທີ່ file, ຊຶ່ງສາມາດຮ້ອງຂໍໄດ້ໃນວິທີການປົກກະຕິ.
ສະຫນັບສະຫນູນອຸປະກອນໃຫມ່ ມີໃຫ້ສໍາລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32
Retracted ອຸປະກອນສະຫນັບສະຫນູນສະຫນັບສະຫນູນ ບໍ່ມີແລ້ວສຳລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: AVR16DA28, AVR16DA32 ແລະ, AVR16DA48.
ລຸ້ນ 2.31
ບໍ່ມີ.
ລຸ້ນ 2.30
ທາງເລືອກໃຫມ່ເພື່ອປ້ອງກັນການເລີ່ມຕົ້ນຂໍ້ມູນ A new -mno-data-ini t driver option ປ້ອງກັນການເລີ່ມຕົ້ນຂອງຂໍ້ມູນແລະການລ້າງສ່ວນ bss. ມັນເຮັດວຽກໂດຍການສະກັດກັ້ນຜົນຜະລິດຂອງຂໍ້ມູນ do_ copy_ ແລະສັນຍາລັກ d o_ clear_ bss ໃນການປະກອບ. files, ເຊິ່ງຈະປ້ອງກັນການລວມເອົາການປົກກະຕິເຫຼົ່ານັ້ນໂດຍຕົວເຊື່ອມຕໍ່.
ການເພີ່ມປະສິດທິພາບການເພີ່ມປະສິດທິພາບຈໍານວນຫນຶ່ງໄດ້ຖືກປັບປຸງ, ລວມທັງການກໍາຈັດຄໍາແນະນໍາຄືນທີ່ຊ້ໍາກັນ, ການກໍາຈັດການກະໂດດບາງອັນຕາມຄໍາແນະນໍາ skip-if-bit-is, ແລະການປັບປຸງການ abstraction ຂັ້ນຕອນແລະຄວາມສາມາດໃນການເຮັດຊ້ໍາຂະບວນການນີ້.
ທາງເລືອກເພີ່ມເຕີມແມ່ນມີຢູ່ໃນປັດຈຸບັນເພື່ອຄວບຄຸມບາງການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້, ໂດຍສະເພາະ -f section anchors, ເຊິ່ງອະນຸຍາດໃຫ້ເຂົ້າເຖິງວັດຖຸສະຖິດທີ່ຈະປະຕິບັດທີ່ກ່ຽວຂ້ອງກັບສັນຍາລັກຫນຶ່ງ; -mpai derations=n, ເຊິ່ງອະນຸຍາດໃຫ້ຈຳນວນຂອງຂັ້ນຕອນການເຮັດຊ້ຳໆທີ່ບໍ່ມີຕົວຕົນຖືກປ່ຽນຈາກຄ່າເລີ່ມຕົ້ນຂອງ 2; ແລະ, -mpa- call cost- shortcall, ເຊິ່ງປະຕິບັດການ abstraction ຂັ້ນຕອນການຮຸກຮານຫຼາຍ, ໃນຄວາມຫວັງທີ່ linker ສາມາດຜ່ອນຄາຍການໂທຍາວ. ທາງເລືອກສຸດທ້າຍນີ້ສາມາດເພີ່ມຂະຫນາດລະຫັດໄດ້ຖ້າສົມມຸດຕິຖານພື້ນຖານບໍ່ຖືກຮັບຮູ້.
ຮອງຮັບອຸປະກອນໃໝ່ ຮອງຮັບສຳລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, ແລະ AVR128DB64
ຮອງຮັບອຸປະກອນທີ່ຖອດຖອນແລ້ວ ການຮອງຮັບບໍ່ສາມາດໃຊ້ໄດ້ສໍາລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C664251, ແລະ ATAXNUMX.
ເວີຊັ່ນ 2.29 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ສ່ວນຫົວ file ສໍາລັບ compiler built-ins ເພື່ອຮັບປະກັນວ່າ compiler ສາມາດປະຕິບັດຕາມສະເພາະຂອງພາສາເຊັ່ນ MISRA, ໄດ້. ສ່ວນຫົວ file, ເຊິ່ງລວມອັດຕະໂນມັດໂດຍ , ໄດ້ຮັບການປັບປຸງ. ສ່ວນຫົວນີ້ມີຕົ້ນແບບສຳລັບຟັງຊັນທີ່ສ້າງມາທັງໝົດ ເຊັ່ນ: _buil tin _avrnop() ແລະ _buil tin_ avr delay_ cycles () . ບາງອັນທີ່ສ້າງຂຶ້ນອາດຈະບໍ່ສອດຄ່ອງກັບ MISRA; ເຫຼົ່ານີ້ສາມາດຖືກລະເວັ້ນໂດຍການເພີ່ມກໍານົດ _Xe_ STRICT_ MISRA ໃສ່ເສັ້ນຄໍາສັ່ງຂອງ compiler. ວັດສະດຸກໍ່ສ້າງແລະການປະກາດຂອງພວກເຂົາໄດ້ຖືກປັບປຸງເພື່ອໃຊ້ປະເພດຄວາມກວ້າງຄົງທີ່.
ລຸ້ນ 2.20
ຮອງຮັບອຸປະກອນໃໝ່ ການຊ່ວຍເຫຼືອແມ່ນມີໃຫ້ສໍາລັບພາກສ່ວນ AVR ຕໍ່ໄປນີ້: ATTINY1624, ATTINY1626, ແລະ ATTINY1627.
ດີກວ່າການຈັດສັນທີ່ເຫມາະສົມທີ່ສຸດ ການຈັດສັນທີ່ເຫມາະສົມທີ່ສຸດ (BFA) ໃນ compiler ໄດ້ຖືກປັບປຸງເພື່ອໃຫ້ພາກສ່ວນຕ່າງໆຖືກຈັດສັນຢູ່ໃນຄໍາສັ່ງທີ່ອະນຸຍາດໃຫ້ມີການເພີ່ມປະສິດທິພາບທີ່ດີກວ່າ. ດຽວນີ້ BFA ຮອງຮັບພື້ນທີ່ທີ່ຢູ່ທີ່ມີຊື່ ແລະຈັດການການເລີ່ມຕົ້ນຂໍ້ມູນໄດ້ດີຂຶ້ນ.
ການປັບປຸງຂັ້ນຕອນການ abstraction ຕອນນີ້ການເພີ່ມປະສິດທິພາບການເສື່ອມໂຊມຂອງຂັ້ນຕອນໄດ້ຖືກປະຕິບັດຢູ່ໃນລໍາດັບລະຫັດຫຼາຍຂຶ້ນ. ສະຖານະການທີ່ຜ່ານມາທີ່ການເພີ່ມປະສິດທິພາບນີ້ອາດຈະເພີ່ມຂະຫນາດລະຫັດໄດ້ຖືກແກ້ໄຂໂດຍການເຮັດໃຫ້ລະຫັດການເພີ່ມປະສິດທິພາບຮູ້ເຖິງຂະບວນການເກັບຂີ້ເຫຍື້ອຂອງຜູ້ເຊື່ອມຕໍ່.
ຂາດ AVR Assembler AVR Assembler ບໍ່ໄດ້ລວມຢູ່ໃນການແຈກຢາຍນີ້ອີກຕໍ່ໄປ.
ເວີຊັ່ນ 2.19 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.10
Code Coverage ລຸ້ນນີ້ລວມມີຄຸນສົມບັດການຄຸ້ມຄອງລະຫັດທີ່ອຳນວຍຄວາມສະດວກໃນການວິເຄາະຂອບເຂດທີ່ລະຫັດແຫຼ່ງຂອງໂຄງການໄດ້ຖືກປະຕິບັດ. ໃຊ້ຕົວເລືອກ -mcodecov=ram ເພື່ອເປີດໃຊ້ມັນ. ຫຼັງຈາກການປະຕິບັດໂຄງການໃນຮາດແວຂອງທ່ານ, ຂໍ້ມູນຂ່າວສານການຄຸ້ມຄອງລະຫັດຈະຖືກລວມເຂົ້າໃນອຸປະກອນ, ແລະນີ້ສາມາດໂອນແລະສະແດງໂດຍ MPLAB X IDE ຜ່ານ plugin ການຄຸ້ມຄອງລະຫັດ. ເບິ່ງເອກະສານ IDE ສໍາລັບຂໍ້ມູນກ່ຽວກັບ plugin ນີ້ສາມາດໄດ້ຮັບ. #pragma mcodecov ອາດຈະຖືກໃຊ້ເພື່ອຍົກເວັ້ນຫນ້າທີ່ຕໍ່ມາຈາກການວິເຄາະການຄຸ້ມຄອງ. ໂດຍຫລັກການແລ້ວ pragma ຄວນໄດ້ຮັບການເພີ່ມໃນຕອນຕົ້ນຂອງ file ເພື່ອຍົກເວັ້ນທັງໝົດນັ້ນ file ຈາກການວິເຄາະການຄຸ້ມຄອງ. ອີກທາງເລືອກ, ຄຸນລັກສະນະ ( (mcodecov) ) ອາດຈະຖືກໃຊ້ເພື່ອຍົກເວັ້ນຫນ້າທີ່ສະເພາະຈາກການວິເຄາະການຄຸ້ມຄອງ.
ລາຍລະອຽດອຸປະກອນ files ອຸປະກອນໃໝ່ file ເອີ້ນວ່າ avr chipinfo. html ຢູ່ໃນໄດເລກະທໍລີ docs ຂອງການແຈກຢາຍ compiler. ນີ້ file ລາຍການອຸປະກອນທັງໝົດທີ່ຮອງຮັບໂດຍ compiler. ຄລິກໃສ່ຊື່ອຸປະກອນ, ແລະມັນຈະເປີດໜ້າໃດໜຶ່ງທີ່ສະແດງການຕັ້ງຄ່າບິດການຕັ້ງຄ່າທີ່ອະນຸຍາດທັງໝົດ/ຄູ່ຄ່າສຳລັບອຸປະກອນນັ້ນ, ກັບ examples.
ຂັ້ນຕອນການ abstraction ຂັ້ນຕອນການເພີ່ມປະສິດທິພາບ abstraction, ເຊິ່ງແທນທີ່ບລັອກທົ່ວໄປຂອງລະຫັດການປະກອບທີ່ມີການໂທຫາສໍາເນົາສະກັດຂອງບລັອກນັ້ນ, ໄດ້ຖືກເພີ່ມເຂົ້າໃນ compiler. ເຫຼົ່ານີ້ແມ່ນປະຕິບັດໂດຍແອັບພລິເຄຊັນແຍກຕ່າງຫາກ, ເຊິ່ງຖືກເອີ້ນໂດຍອັດຕະໂນມັດໂດຍ compiler ເມື່ອເລືອກລະດັບ 2, 3 ຫຼືການເພີ່ມປະສິດທິພາບ. ການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້ຫຼຸດລົງຂະຫນາດລະຫັດ, ແຕ່ພວກມັນອາດຈະຫຼຸດລົງຄວາມໄວໃນການປະຕິບັດແລະການແກ້ບັນຫາລະຫັດ.
ການຂັດຂວາງຂັ້ນຕອນສາມາດຖືກປິດການໃຊ້ງານໃນລະດັບການເພີ່ມປະສິດທິພາບທີ່ສູງຂຶ້ນໂດຍໃຊ້ທາງເລືອກ -mno-pa, ຫຼືສາມາດຖືກເປີດໃຊ້ໃນລະດັບການເພີ່ມປະສິດທິພາບຕ່ໍາ (ຂຶ້ນກັບໃບອະນຸຍາດຂອງທ່ານ) ໂດຍໃຊ້ -mpa. ມັນສາມາດຖືກປິດການໃຊ້ງານສໍາລັບວັດຖຸ file ການນໍາໃຊ້ -mno-pa-on-file=fileຊື່, ຫຼືປິດການໃຊ້ງານສໍາລັບຟັງຊັນໂດຍໃຊ້ -mno-pa on function= function.
ພາຍໃນລະຫັດແຫຼ່ງຂອງທ່ານ, ຂະບວນການ abstraction ສາມາດຖືກປິດການໃຊ້ງານສໍາລັບຟັງຊັນໂດຍການນໍາໃຊ້ _attribute_ ( (nopa)) ກັບຄໍານິຍາມຂອງຟັງຊັນ, ຫຼືໂດຍໃຊ້ _nopa, ເຊິ່ງຂະຫຍາຍໄປສູ່ຄຸນລັກສະນະ ((nopa, noinline)) ແລະດັ່ງນັ້ນຈຶ່ງປ້ອງກັນບໍ່ໃຫ້ inlining ຫນ້າທີ່ເກີດຂຶ້ນ. ແລະມີການ abstraction ຂອງລະຫັດ inlined.
ລັອກບິດສະຫນັບສະຫນູນໃນ pragma ຕອນນີ້ສາມາດໃຊ້ການຕັ້ງຄ່າ #pragma ເພື່ອລະບຸບິດລັອກ AVR ເຊັ່ນດຽວກັນກັບບິດການຕັ້ງຄ່າອື່ນໆ. ກວດເບິ່ງຂໍ້ມູນຊິບ avr. html file (ທີ່ໄດ້ກ່າວມາຂ້າງເທິງ) ສໍາລັບຄູ່ການຕັ້ງຄ່າ / ຄ່າທີ່ຈະໃຊ້ກັບ pragma ນີ້.
ຮອງຮັບອຸປະກອນໃໝ່ ສະຫນັບສະຫນູນສາມາດໃຊ້ໄດ້ສໍາລັບພາກສ່ວນດັ່ງຕໍ່ໄປນີ້: AVR28DA128, AVR64DA128, AVR32DA128, ແລະ AVR48DA128.
ລຸ້ນ 2.05
bits ເພີ່ມເຕີມສໍາລັບ buck ຂອງທ່ານ ເວີຊັ່ນ macOS ຂອງ compiler ແລະຕົວຈັດການໃບອະນຸຍາດນີ້ເປັນແອັບພລິເຄຊັນ 64-bit. ນີ້ຈະຮັບປະກັນວ່າ compiler ຈະຕິດຕັ້ງແລະດໍາເນີນການໂດຍບໍ່ມີການເຕືອນກ່ຽວກັບ macOS ຮຸ່ນທີ່ຜ່ານມາ.
Const objects in the program memory ປະຈຸບັນ compiler ສາມາດຈັດວາງວັດຖຸ const-qualified ໃນຫນ່ວຍຄວາມຈໍາ Flash ຂອງໂຄງການ, ແທນທີ່ຈະມີສິ່ງເຫຼົ່ານີ້ຢູ່ໃນ RAM. compiler ໄດ້ຖືກດັດແປງເພື່ອໃຫ້ຂໍ້ມູນທົ່ວໂລກທີ່ມີຄຸນສົມບັດຖືກເກັບໄວ້ໃນຫນ່ວຍຄວາມຈໍາ flash ຂອງໂປລແກລມແລະຂໍ້ມູນນີ້ສາມາດເຂົ້າເຖິງໄດ້ໂດຍກົງແລະທາງອ້ອມໂດຍໃຊ້ຄໍາແນະນໍາຂອງໂປລແກລມ - ຄວາມຈໍາທີ່ເຫມາະສົມ. ຄຸນສົມບັດໃໝ່ນີ້ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ ແຕ່ສາມາດຖືກປິດການນຳໃຊ້ໄດ້ໂດຍໃຊ້ຕົວເລືອກ -mno-const-data-in-progmem. ສຳລັບສະຖາປັດຕະຍະກຳ avrxmega3 ແລະ avrtiny, ຄຸນສົມບັດນີ້ບໍ່ຈຳເປັນ ແລະຖືກປິດການນຳໃຊ້ສະເໝີ, ເນື່ອງຈາກໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມຖືກສ້າງແຜນທີ່ໃສ່ພື້ນທີ່ທີ່ຢູ່ຂໍ້ມູນສຳລັບອຸປະກອນເຫຼົ່ານີ້.
ມາດຕະຖານຟຣີ ສະບັບທີ່ບໍ່ມີໃບອະນຸຍາດ (ຟຣີ) ຂອງ compiler ນີ້ອະນຸຍາດໃຫ້ optimization ສູງສຸດແລະລວມທັງລະດັບ 2. ນີ້ຈະອະນຸຍາດໃຫ້ຜົນຜະລິດທີ່ຄ້າຍຄືກັນ, ເຖິງແມ່ນວ່າບໍ່ຄືກັນ, ເປັນໄປໄດ້ໃນເມື່ອກ່ອນໂດຍໃຊ້ໃບອະນຸຍາດມາດຕະຖານ.
ຍິນດີຕ້ອນຮັບ AVRASM2 ຕົວປະກອບ AVRASM2 ສໍາລັບອຸປະກອນ 8-bit ໃນປັດຈຸບັນແມ່ນລວມຢູ່ໃນຕົວຕິດຕັ້ງ XC8 compiler. ຕົວປະກອບນີ້ບໍ່ໄດ້ໃຊ້ໂດຍຜູ້ສັງລວມ XC8, ແຕ່ມີໃຫ້ສໍາລັບໂຄງການໂດຍອີງໃສ່ແຫຼ່ງປະກອບທີ່ຂຽນດ້ວຍມື.
ຮອງຮັບອຸປະກອນໃໝ່ ຮອງຮັບສຳລັບພາກສ່ວນຕໍ່ໄປນີ້: ATMEGA1608, ATMEGA1609, ATMEGA808, ແລະ ATMEGA809.
ລຸ້ນ 2.00
ໄດເວີລະດັບສູງສຸດ ໄດເວີໃຫມ່, ເອີ້ນວ່າ xc8-cc, ໃນປັດຈຸບັນນັ່ງຢູ່ຂ້າງເທິງໄດເວີ avr-gcc ທີ່ຜ່ານມາແລະໄດເວີ xc8, ແລະມັນສາມາດໂທຫາ compiler ທີ່ເຫມາະສົມໂດຍອີງໃສ່ການເລືອກອຸປະກອນເປົ້າຫມາຍດັ່ງກ່າວ. ໄດເວີນີ້ຍອມຮັບທາງເລືອກແບບ GCC, ເຊິ່ງຖືກແປສໍາລັບຫຼືສົ່ງຜ່ານໄປຫາ compiler ທີ່ຖືກປະຕິບັດ. ໄດເວີນີ້ອະນຸຍາດໃຫ້ມີຊຸດທາງເລືອກທີ່ຄ້າຍຄືກັນກັບ semantics ທີ່ຄ້າຍຄືກັນເພື່ອນໍາໃຊ້ກັບເປົ້າຫມາຍ AVR ຫຼື PIC ໃດໆແລະດັ່ງນັ້ນຈຶ່ງເປັນວິທີທີ່ແນະນໍາທີ່ຈະເອີ້ນ compiler. ຖ້າຕ້ອງການ, ໄດເວີ avr-gcc ເກົ່າສາມາດຖືກເອີ້ນໂດຍກົງໂດຍໃຊ້ຕົວເລືອກແບບເກົ່າທີ່ມັນຍອມຮັບໃນສະບັບລວບລວມກ່ອນຫນ້ານີ້.
ການໂຕ້ຕອບ C ທົ່ວໄປ ປະຈຸບັນນີ້ compiler ສາມາດປະຕິບັດຕາມ MPLAB Common C Interface, ອະນຸຍາດໃຫ້ source code ສາມາດ ported ໄດ້ງ່າຍກວ່າໃນທົ່ວ compilers MPLAB XC ທັງຫມົດ. ຕົວເລືອກ -mext=cci ຮ້ອງຂໍຄຸນສົມບັດນີ້, ເປີດໃຊ້ syntax ທາງເລືອກສໍາລັບການຂະຫຍາຍພາສາຫຼາຍ.
ຜູ້ຂັບຂີ່ຫ້ອງສະຫມຸດໃຫມ່ ຜູ້ຂັບຂີ່ຫ້ອງສະຫມຸດໃຫມ່ແມ່ນຢູ່ເຫນືອຫ້ອງສະຫມຸດ PIC libr ທີ່ຜ່ານມາແລະ AVR avr-ar librarian. ໄດເວີນີ້ຍອມຮັບທາງເລືອກແບບ GCC-archiver, ເຊິ່ງຖືກແປສໍາລັບຫຼືສົ່ງຜ່ານໄປຫາຫ້ອງສະຫມຸດທີ່ຖືກປະຕິບັດ. ໄດເວີໃຫມ່ອະນຸຍາດໃຫ້ມີຊຸດທາງເລືອກທີ່ຄ້າຍຄືກັນກັບ semantics ທີ່ຄ້າຍຄືກັນເພື່ອນໍາໃຊ້ເພື່ອສ້າງຫຼືຈັດການ PIC ຫຼື AVR ໃດໆ. file ແລະດັ່ງນັ້ນຈຶ່ງເປັນວິທີທີ່ແນະນໍາທີ່ຈະຮຽກຮ້ອງໃຫ້ຫ້ອງສະຫມຸດໄດ້. ຖ້າຕ້ອງການສໍາລັບໂຄງການມໍລະດົກ, ຫ້ອງສະຫມຸດທີ່ຜ່ານມາສາມາດຖືກເອີ້ນໂດຍກົງໂດຍໃຊ້ຕົວເລືອກແບບເກົ່າທີ່ມັນຍອມຮັບໃນສະບັບ compiler ກ່ອນຫນ້ານີ້.
ບັນຫາການເຄື່ອນຍ້າຍ
ຕໍ່ໄປນີ້ແມ່ນລັກສະນະທີ່ໄດ້ຖືກປະຕິບັດໂດຍ compiler ທີ່ແຕກຕ່າງກັນໃນປັດຈຸບັນ. ການປ່ຽນແປງເຫຼົ່ານີ້ອາດຈະຮຽກຮ້ອງໃຫ້ມີການປັບປຸງລະຫັດແຫຼ່ງຂໍ້ມູນຂອງທ່ານຖ້າຫາກວ່າການ porting ລະຫັດກັບສະບັບ compiler ນີ້. ໝາຍເລກເວີຊັນໃນຫົວເລື່ອງຍ່ອຍສະແດງເຖິງລຸ້ນ compiler ທຳອິດເພື່ອຮອງຮັບການປ່ຽນແປງທີ່ຕາມມາ.
ລຸ້ນ 2.40
ບໍ່ມີ.
ເວີຊັ່ນ 2.39 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.36
ບໍ່ມີ.
ລຸ້ນ 2.35
ການຈັດການສາຍຫາຖານ (XCS-2420) ເພື່ອຮັບປະກັນຄວາມສອດຄ່ອງຂອງ XC compilers ອື່ນໆ, ຟັງຊັນ XC8 string-to, ເຊັ່ນ: sttol () ແລະອື່ນໆ, ຈະບໍ່ພະຍາຍາມປ່ຽນສະຕຣິງປ້ອນຂໍ້ມູນ ຖ້າພື້ນຖານທີ່ລະບຸນັ້ນໃຫຍ່ກວ່າ 36 ແລະຈະຕັ້ງ errno ເປັນ EINVAL ແທນ. ມາດຕະຖານ C ບໍ່ໄດ້ລະບຸພຶດຕິກໍາຂອງຫນ້າທີ່ເມື່ອຄ່າພື້ນຖານນີ້ເກີນ.
ການເພີ່ມປະສິດທິພາບຄວາມໄວທີ່ບໍ່ເຫມາະສົມ ຂັ້ນຕອນການເພີ່ມປະສິດທິພາບ abstraction ໄດ້ຖືກເປີດໃຊ້ໃນເວລາທີ່ເລືອກການເພີ່ມປະສິດທິພາບລະດັບ 3 (-03). ການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້ຫຼຸດລົງຂະຫນາດລະຫັດໂດຍຄ່າໃຊ້ຈ່າຍຂອງຄວາມໄວລະຫັດ, ດັ່ງນັ້ນບໍ່ຄວນຖືກປະຕິບັດ. ໂຄງການທີ່ໃຊ້ລະດັບການເພີ່ມປະສິດທິພາບນີ້ອາດຈະເຫັນຄວາມແຕກຕ່າງຂອງຂະຫນາດລະຫັດແລະຄວາມໄວໃນການປະຕິບັດໃນເວລາທີ່ສ້າງຂຶ້ນດ້ວຍການປ່ອຍນີ້.
ການທໍາງານຂອງຫ້ອງສະຫມຸດ ລະຫັດສໍາລັບຫຼາຍຫນ້າທີ່ຫ້ອງສະຫມຸດ C ມາດຕະຖານໃນປັດຈຸບັນແມ່ນມາຈາກຫ້ອງສະຫມຸດມາດຕະຖານ Unified ຂອງ Microchip, ເຊິ່ງອາດຈະສະແດງພຶດຕິກໍາທີ່ແຕກຕ່າງກັນໃນບາງສະຖານະການເມື່ອທຽບກັບທີ່ສະຫນອງໃຫ້ໂດຍຫ້ອງສະຫມຸດ avr-libc ໃນອະດີດ. ຕົວຢ່າງampດັ່ງນັ້ນ, ມັນບໍ່ຈໍາເປັນທີ່ຈະເຊື່ອມຕໍ່ໃນຫ້ອງສະຫມຸດ lprintf_flt (-print _flt option) ເພື່ອເປີດໃຊ້ການຮອງຮັບ IO ທີ່ມີຮູບແບບສໍາລັບຕົວລະບຸຮູບແບບ float. ຄຸນສົມບັດ IO ອັດສະລິຍະຂອງຫ້ອງສະໝຸດມາດຕະຖານ Microchip Unified ເຮັດໃຫ້ທາງເລືອກນີ້ຊ້ຳຊ້ອນ. ນອກຈາກນັ້ນ, ການໃຊ້ _p suffixed routines ສໍາລັບຟັງຊັນຂອງ string ແລະ memory (eg strcpy_P () etc.. ) ທີ່ໃຊ້ໃນ const strings ໃນ flash ແມ່ນບໍ່ຈໍາເປັນອີກຕໍ່ໄປ. ປົກກະຕິ C ມາດຕະຖານ (ເຊັ່ນ: strcpy ()) ຈະເຮັດວຽກຢ່າງຖືກຕ້ອງກັບຂໍ້ມູນດັ່ງກ່າວເມື່ອຄຸນສົມບັດ const-data-in-program-memory ຖືກເປີດໃຊ້.
ລຸ້ນ 2.32
ບໍ່ມີ.
ລຸ້ນ 2.31
ບໍ່ມີ.
ລຸ້ນ 2.30
ບໍ່ມີ.
ເວີຊັ່ນ 2.29 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.20
ປ່ຽນໂຄງຮ່າງ DFP ແລ້ວ ໃນປັດຈຸບັນ compiler ສົມມຸດວ່າຮູບແບບທີ່ແຕກຕ່າງກັນທີ່ໃຊ້ໂດຍ DFPs (Device Family Packs). ນີ້ຫມາຍຄວາມວ່າ DFP ເກົ່າອາດຈະບໍ່ເຮັດວຽກກັບການປ່ອຍນີ້, ແລະ compilers ເກົ່າຈະບໍ່ສາມາດນໍາໃຊ້ DFPs ຫລ້າສຸດ.
ເວີຊັ່ນ 2.19 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.10
ບໍ່ມີ
ລຸ້ນ 2.05
Const ວັດຖຸຢູ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ ໃຫ້ສັງເກດວ່າໂດຍຄ່າເລີ່ມຕົ້ນ, ວັດຖຸ const-qualfiied ຈະຖືກຈັດໃສ່ແລະເຂົ້າເຖິງຢູ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມ (ຕາມທີ່ອະທິບາຍຢູ່ທີ່ນີ້). ນີ້ຈະສົ່ງຜົນກະທົບຕໍ່ຂະຫນາດແລະຄວາມໄວການປະຕິບັດຂອງໂຄງການຂອງທ່ານ, ແຕ່ຄວນຫຼຸດຜ່ອນການໃຊ້ RAM. ຄຸນສົມບັດນີ້ສາມາດຖືກປິດໃຊ້ງານໄດ້, ຖ້າຕ້ອງການ, ໂດຍໃຊ້ຕົວເລືອກ -mnoconst- da ta-in-progmem.
ລຸ້ນ 2.00
ຟິວການຕັ້ງຄ່າ ຟິວການຕັ້ງຄ່າອຸປະກອນໃນປັດຈຸບັນສາມາດດໍາເນີນໂຄງການໂດຍການນໍາໃຊ້ config pragma ປະຕິບັດຕາມໂດຍການຕັ້ງຄ່າຄູ່ເພື່ອລະບຸສະຖານະຂອງຟິວ, ເຊັ່ນ:
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
ວັດຖຸແລະຫນ້າທີ່ຢ່າງແທ້ຈິງ ຕອນນີ້ວັດຖຸ ແລະຟັງຊັນຕ່າງໆສາມາດຖືກວາງໄວ້ທີ່ທີ່ຢູ່ສະເພາະໃນໜ່ວຍຄວາມຈຳໂດຍໃຊ້ຕົວລະບຸ CCI _at (address), ຕົວຢ່າງເຊັ່ນample: #include int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } ການໂຕ້ຖຽງກັບຕົວລະບຸນີ້ຈະຕ້ອງເປັນຄ່າຄົງທີ່ທີ່ສະແດງເຖິງທີ່ຢູ່ທີ່ຈະວາງ byte ຫຼືຄໍາແນະນໍາທໍາອິດ. ທີ່ຢູ່ RAM ແມ່ນສະແດງໂດຍການໃຊ້ຄ່າຊົດເຊີຍຂອງ 0x800000. ເປີດໃຊ້ CCI ເພື່ອໃຊ້ຄຸນສົມບັດນີ້.
syntax ຟັງຊັນຂັດຂວາງໃຫມ່ ໃນປັດຈຸບັນ compiler ຍອມຮັບ CCI interrupt (num) specifier ເພື່ອຊີ້ບອກວ່າຟັງຊັນ C ແມ່ນ interrupt handlers. ຕົວລະບຸເອົາຕົວເລກລົບກວນ, ຕົວຢ່າງເຊັ່ນample: #include void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
ບັນຫາຄົງທີ່
ຕໍ່ໄປນີ້ແມ່ນການແກ້ໄຂທີ່ໄດ້ເຮັດກັບ compiler. ເຫຼົ່ານີ້ອາດຈະແກ້ໄຂຂໍ້ບົກພ່ອງໃນລະຫັດທີ່ສ້າງຂຶ້ນຫຼືປ່ຽນແປງການທໍາງານຂອງ compiler ກັບສິ່ງທີ່ມີຈຸດປະສົງຫຼືກໍານົດໂດຍຄໍາແນະນໍາຂອງຜູ້ໃຊ້. ໝາຍເລກເວີຊັນໃນຫົວເລື່ອງຍ່ອຍສະແດງເຖິງລຸ້ນ compiler ທຳອິດທີ່ຈະມີການແກ້ໄຂສຳລັບບັນຫາທີ່ຕາມມາ. ປ້າຍວົງເລັບຢູ່ໃນຫົວຂໍ້ແມ່ນການກໍານົດບັນຫານັ້ນໃນຖານຂໍ້ມູນການຕິດຕາມ. ເຫຼົ່ານີ້ອາດຈະເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານຕ້ອງການຕິດຕໍ່ສະຫນັບສະຫນູນ.
ກະລຸນາຮັບຊາບວ່າບາງບັນຫາສະເພາະອຸປະກອນຖືກແກ້ໄຂໃນ Device Family Pack (DFP) ທີ່ກ່ຽວຂ້ອງກັບອຸປະກອນ. ເບິ່ງ MPLAB Pack Manager ສໍາລັບຂໍ້ມູນກ່ຽວກັບການປ່ຽນແປງທີ່ເຮັດກັບ DFPs ແລະເພື່ອດາວໂຫລດຊຸດຫລ້າສຸດ.
ລຸ້ນ 2.40
ຜ່ອນຄາຍເກີນໄປ (XCS-2876) ເມື່ອໃຊ້ທາງເລືອກ -mrelax, compiler ບໍ່ໄດ້ຈັດສັນບາງສ່ວນຮ່ວມກັນ, ເຮັດໃຫ້ຂະຫນາດລະຫັດທີ່ເຫມາະສົມຫນ້ອຍລົງ. ນີ້ອາດຈະເກີດຂຶ້ນກັບລະຫັດທີ່ໃຊ້ຫ້ອງສະຫມຸດ MUSL ໃຫມ່ຫຼືມີສັນຍາລັກທີ່ອ່ອນແອ.
ຄຸນນະສົມບັດການສ້າງແຜນທີ່ບໍ່ໄດ້ປິດການໃຊ້ງານດັ່ງທີ່ໄດ້ກ່າວໄວ້ໃນການເຕືອນໄພ (XCS-2875) ຄຸນສົມບັດ mappedprogmem cost-data-in-config ແມ່ນຂຶ້ນກັບຄຸນສົມບັດ cost-data-in-proem ທີ່ຖືກເປີດໃຊ້. ຖ້າຄຸນສົມບັດ cost-data-ipconfig- mapped-proem ຖືກເປີດໃຊ້ຢ່າງຈະແຈ້ງໂດຍໃຊ້ຕົວເລືອກ ແລະຄຸນສົມບັດ cost-data-inprogmem ຖືກປິດໃຊ້ງານ, ຂັ້ນຕອນການເຊື່ອມໂຍງລົ້ມເຫລວ, ເຖິງແມ່ນວ່າຈະມີຂໍ້ຄວາມເຕືອນວ່າ cons data- in-config-mapped- ຄຸນສົມບັດ proem ໄດ້ຖືກປິດການນຳໃຊ້ໂດຍອັດຕະໂນມັດ, ເຊິ່ງບໍ່ຖືກຕ້ອງທັງໝົດ. ຄຸນສົມບັດ const-data-in-config-mapped-proem ໃນປັດຈຸບັນຖືກປິດໃຊ້ງານຢ່າງສົມບູນໃນສະຖານະການນີ້.
ການປ່ຽນແປງ DFP ເພື່ອເຂົ້າເຖິງ NVMCTRL (XCS-2848) ຢ່າງຖືກຕ້ອງ ລະຫັດການເລີ່ມຕົ້ນຂອງ runtime ທີ່ໃຊ້ໂດຍອຸປະກອນ AVR64EA ບໍ່ໄດ້ຄໍານຶງເຖິງວ່າການລົງທະບຽນ NVMCTRL ຢູ່ພາຍໃຕ້ການປົກປ້ອງການປ່ຽນແປງການຕັ້ງຄ່າ (CCP) ແລະບໍ່ສາມາດກໍານົດ IO SFR ເປັນຫນ້າທີ່ນໍາໃຊ້ໂດຍ const-data-in configmapped- proem compiler. ຄຸນນະສົມບັດ. ການປ່ຽນແປງທີ່ສ້າງຂຶ້ນໃນ AVR-Ex_DFP ເວີຊັນ 2.2.55 ຈະເຮັດໃຫ້ລະຫັດການເລີ່ມຕົ້ນຂອງ runtime ສາມາດຂຽນໃສ່ທະບຽນນີ້ຢ່າງຖືກຕ້ອງ.
ການປ່ຽນແປງ DFP ເພື່ອຫຼີກເວັ້ນການ flash mapping (XCS-2847) ໄດ້ມີການປະຕິບັດການແກ້ໄຂບັນຫາກັບຄຸນສົມບັດອຸປະກອນແຜນທີ່ແຟລດທີ່ລາຍງານໃນ AVR128DA28/32/48/64 Silicon Errata (DS80000882) ແລ້ວ. ຄຸນສົມບັດການລວບລວມຂໍ້ມູນ const-data-in-config-mapped-proem ຈະບໍ່ຖືກນຳໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນສຳລັບອຸປະກອນທີ່ໄດ້ຮັບຜົນກະທົບ ແລະການປ່ຽນແປງນີ້ຈະປາກົດໃນ AVR-Ex_DFP ເວີຊັນ 2.2.160.
ສ້າງຂໍ້ຜິດພາດກັບ sinhf ຫຼື coshf (XCS-2834) ຄວາມພະຍາຍາມທີ່ຈະນໍາໃຊ້ຫນ້າທີ່ຫ້ອງສະຫມຸດ sinhf () ຫຼື coshf () ເຮັດໃຫ້ເກີດຄວາມຜິດພາດໃນການເຊື່ອມໂຍງ, ອະທິບາຍການອ້າງອີງທີ່ບໍ່ໄດ້ກໍານົດ. ຟັງຊັນທີ່ຂາດຫາຍໄປທີ່ອ້າງອີງໃນປັດຈຸບັນໄດ້ຖືກລວມເຂົ້າໃນການແຈກຢາຍ compiler.
ສ້າງຂໍ້ຜິດພາດກັບ nopa (XCS-2833) ການໃຊ້ຄຸນສົມບັດ nopa ກັບຟັງຊັນທີ່ມີຊື່ຕົວປະກອບຂອງມັນລະບຸໄວ້ໂດຍໃຊ້ເປັນ () ເຮັດໃຫ້ເກີດຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຈາກຕົວປະກອບ. ການປະສົມປະສານນີ້ເປັນໄປບໍ່ໄດ້.
ຄວາມລົ້ມເຫຼວຂອງຟັງຊັນ Variadic ກັບ arguments ຕົວຊີ້ (XCS-2755, XCS-2731) ຟັງຊັນທີ່ມີຈໍານວນຕົວປ່ຽນແປງຂອງ argument ຄາດວ່າ 24-bit (_memo type) pointers ຈະຖືກສົ່ງຜ່ານໃນລາຍການ argument ປ່ຽນແປງໄດ້ເມື່ອຄຸນສົມບັດ cost-data-in-proem ຖືກເປີດໃຊ້. ການໂຕ້ຖຽງທີ່ເປັນຕົວຊີ້ໄປຫາຫນ່ວຍຄວາມຈໍາຂໍ້ມູນກໍາລັງຖືກສົ່ງຜ່ານເປັນວັດຖຸ 16 ບິດ, ເຊິ່ງກໍ່ໃຫ້ເກີດຄວາມລົ້ມເຫຼວຂອງລະຫັດໃນເວລາທີ່ພວກເຂົາຖືກອ່ານໃນທີ່ສຸດ. ເມື່ອຄຸນສົມບັດ cons data- in-proem ຖືກເປີດໃຊ້, ທັງໝົດ 16-bit pointers arguments ດຽວນີ້ຖືກປ່ຽນເປັນ pointers 24-bit. ຟັງຊັນຫ້ອງສະໝຸດ strtoxxx ລົ້ມເຫລວ (XCS-2620) ເມື່ອຄຸນສົມບັດ const-data-in-proem ຖືກເປີດໃຊ້, ພາລາມິເຕີ enter ໃນຟັງຊັນຫ້ອງສະໝຸດ strtoxxx ບໍ່ໄດ້ຖືກປັບປຸງໃຫ້ເໝາະສົມສຳລັບອາກິວເມັນສະຕຣິງແຫຼ່ງທີ່ບໍ່ໄດ້ຢູ່ໃນໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມ.
ແຈ້ງເຕືອນການສົ່ງສັນຍານທີ່ບໍ່ຖືກຕ້ອງ (XCS-2612) ດຽວນີ້ compiler ຈະອອກຂໍ້ຜິດພາດຖ້າຄຸນສົມບັດ cost-in-proem ຖືກເປີດໃຊ້ງານແລະທີ່ຢູ່ຂອງ string literal ແມ່ນຖືກສົ່ງກັບພື້ນທີ່ທີ່ຢູ່ຂໍ້ມູນຢ່າງຊັດເຈນ (ຫຼຸດລົງ const qualifier), ສໍາລັບການຍົກຕົວຢ່າງ.ample, (uint8 t *) “ສະບາຍດີໂລກ!”. ການເຕືອນໄພມີບັນຫາຖ້າຫາກວ່າທີ່ຢູ່ອາດຈະບໍ່ຖືກຕ້ອງໃນເວລາທີ່ຕົວຊີ້ຂໍ້ມູນ const ຖືກຄາສທໄປຫາພື້ນທີ່ທີ່ຢູ່ຂໍ້ມູນຢ່າງຊັດເຈນ.
ການຈັດວາງຂອງວັດຖຸ const ທີ່ບໍ່ຮູ້ຈັກ (XCS-2408) uninitialized const ແລະ const v olatile objects ບໍ່ໄດ້ຖືກຈັດໃສ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມໃນອຸປະກອນທີ່ມີແຜນທີ່ທັງຫມົດຫຼືບາງສ່ວນຂອງຫນ່ວຍຄວາມຈໍາຂອງໂຄງການເຂົ້າໄປໃນພື້ນທີ່ທີ່ຢູ່ຂໍ້ມູນ. ສໍາລັບອຸປະກອນເຫຼົ່ານີ້, ວັດຖຸດັ່ງກ່າວໄດ້ຖືກຈັດໃສ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ, ເຮັດໃຫ້ການດໍາເນີນງານຂອງເຂົາເຈົ້າສອດຄ່ອງກັບອຸປະກອນອື່ນໆ.
ເວີຊັ່ນ 2.39 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.36
ຂໍ້ຜິດພາດໃນເວລາທີ່ການຊັກຊ້າ (XCS-2774) ການປ່ຽນແປງເລັກນ້ອຍໃນຄ່າເລີ່ມຕົ້ນການເພີ່ມປະສິດທິພາບຂອງຮູບແບບຟຣີໄດ້ປ້ອງກັນການພັບແບບຄົງທີ່ຂອງ operand expressions ໄປສູ່ການຊັກຊ້າໃນການເຮັດວຽກ, ສົ່ງຜົນໃຫ້ພວກມັນຖືກປະຕິບັດເປັນ noncontacts ແລະເຮັດໃຫ້ເກີດຄວາມຜິດພາດ: _buil tin avr delay_ cycles expects ac ompile ຈຳນວນເຕັມເວລາຄົງທີ່.
ລຸ້ນ 2.35
ການຈັດສັນຕິດຕໍ່ກັນໂດຍໃຊ້ _at (XCS-2653) ການຈັດສັນທີ່ຕິດກັນຂອງຫຼາຍບ່ອນຢູ່ໃນພາກສ່ວນທີ່ມີຊື່ດຽວກັນ ແລະໃຊ້ຢູ່ທີ່ () ບໍ່ໄດ້ຜົນຢ່າງຖືກຕ້ອງ. ຕົວຢ່າງample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; ຄວນວາງ arr2 ທັນທີຫຼັງຈາກ aril.
ການລະບຸທີ່ຢູ່ເລີ່ມຕົ້ນຂອງພາກ (XCS-2650) ທາງເລືອກ -Wal, –section-start ແມ່ນງຽບໆທີ່ຈະບໍ່ວາງພາກສ່ວນຕ່າງໆຢູ່ທີ່ທີ່ຢູ່ເລີ່ມຕົ້ນທີ່ຖືກສະເໜີຊື່. ບັນຫານີ້ໄດ້ຖືກແກ້ໄຂແລ້ວສໍາລັບພາກສ່ວນທີ່ມີຊື່ແບບກໍາຫນົດເອງ; ແນວໃດກໍ່ຕາມ, ມັນຈະບໍ່ເຮັດວຽກສໍາລັບພາກສ່ວນມາດຕະຖານເຊັ່ນ . ຂໍ້ຄວາມ ຫຼື . bss, ເຊິ່ງຕ້ອງຖືກວາງໄວ້ໂດຍໃຊ້ຕົວເລືອກ -Wl, -T.
Linker ຂັດຂ້ອງເມື່ອຜ່ອນຄາຍ (XCS-2647) ເມື່ອການເພີ່ມປະສິດທິພາບ -relax ຖືກເປີດໃຊ້ແລະມີສ່ວນລະຫັດຫຼືຂໍ້ມູນທີ່ບໍ່ເຫມາະສົມກັບຫນ່ວຍຄວາມຈໍາທີ່ມີຢູ່, ຕົວເຊື່ອມຕໍ່ຈະຂັດຂ້ອງ. ໃນປັດຈຸບັນ, ໃນສະຖານະການດັ່ງກ່າວ, ຂໍ້ຄວາມຄວາມຜິດພາດແມ່ນອອກແທນ.
ການເຂົ້າເຖິງ EEPROM ບໍ່ດີ (XCS-2629) leproma _read_ block routine ເຮັດວຽກບໍ່ຖືກຕ້ອງໃນອຸປະກອນ Mega ເມື່ອຕົວເລືອກ -monist-data-in-proem ຖືກເປີດໃຊ້ (ເຊິ່ງເປັນສະຖານະເລີ່ມຕົ້ນ), ສົ່ງຜົນໃຫ້ຫນ່ວຍຄວາມຈໍາ EEPROM ບໍ່ໄດ້ຮັບການອ່ານຢ່າງຖືກຕ້ອງ.
ການຈັດສັນໜ່ວຍຄວາມຈຳບໍ່ຖືກຕ້ອງ (XCS-2593, XCS-2651) ເມື່ອຕົວເລືອກຕົວເຊື່ອມຕໍ່ -Text ຫຼື -Tata (ສໍາລັບ example ຜ່ານການນໍາໃຊ້ທາງເລືອກການຂັບ -Wl) ແມ່ນລະບຸໄວ້, ຂໍ້ຄວາມທີ່ສອດຄ້ອງກັນ / ຕົ້ນກໍາເນີດຂໍ້ມູນໄດ້ຮັບການປັບປຸງ; ຢ່າງໃດກໍຕາມ, ທີ່ຢູ່ສຸດທ້າຍບໍ່ໄດ້ຖືກປັບຕາມຄວາມເຫມາະສົມ, ຊຶ່ງສາມາດນໍາໄປສູ່ພາກພື້ນເກີນຂອບເຂດຄວາມຈໍາຂອງອຸປະກອນເປົ້າຫມາຍດັ່ງກ່າວ.
ລະຫັດຂັດຂວາງ ATtiny ບໍ່ຖືກຕ້ອງ (XCS-2465) ເມື່ອການສ້າງອຸປະກອນ Tatin ແລະການເພີ່ມປະສິດທິພາບຖືກປິດໃຊ້ງານ (-00), ຟັງຊັນລົບກວນອາດຈະເຮັດໃຫ້ operand ອອກຈາກຂໍ້ຄວາມ assembler ໄລຍະ.
ທາງເລືອກທີ່ບໍ່ໄດ້ຜ່ານ (XCS-2452) ເມື່ອໃຊ້ຕົວເລືອກ -Wl ທີ່ມີຫຼາຍທາງເລືອກຕົວເຊື່ອມຕໍ່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, ບໍ່ແມ່ນທຸກຕົວເລືອກຕົວເຊື່ອມຕໍ່ຖືກສົ່ງໄປຫາຕົວເຊື່ອມຕໍ່.
ຄວາມຜິດພາດໃນການອ່ານຄວາມຊົງຈໍາຂອງໂປຣແກຣມໂດຍທາງອ້ອມ (XCS-2450) ໃນບາງກໍລະນີ, compiler ໄດ້ຜະລິດຂໍ້ຜິດພາດພາຍໃນ (insn ທີ່ບໍ່ສາມາດຮັບຮູ້ໄດ້) ເມື່ອອ່ານຄ່າສອງ byte ຈາກຕົວຊີ້ໄປຫາຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ.
ລຸ້ນ 2.32
ການເຂົ້າເຖິງຫ້ອງສະໝຸດຄັ້ງທີສອງລົ້ມເຫລວ (XCS-2381) ກຳລັງເອີ້ນໃຊ້ xc8-ar ເວີຊັນ Windows. exe archiver ຫໍສະຫມຸດເປັນຄັ້ງທີສອງເພື່ອເຂົ້າເຖິງຄັງເກັບຂອງຫ້ອງສະຫມຸດທີ່ມີຢູ່ແລ້ວອາດຈະລົ້ມເຫລວໂດຍບໍ່ສາມາດປ່ຽນຊື່ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ.
ລຸ້ນ 2.31
ຄວາມລົ້ມເຫຼວຂອງຄອມພີວເຕີທີ່ບໍ່ໄດ້ອະທິບາຍ (XCS-2367) ເມື່ອແລ່ນຢູ່ໃນແພລະຕະຟອມ Windows ທີ່ມີໄດເລກະທໍລີຊົ່ວຄາວຂອງລະບົບທີ່ຕັ້ງເປັນເສັ້ນທາງທີ່ປະກອບມີຈຸດ'.' ລັກສະນະ, compiler ອາດຈະລົ້ມເຫລວໃນການປະຕິບັດ.
ລຸ້ນ 2.30
ປ້າຍກຳກັບທົ່ວໂລກຖືກວາງຜິດຫຼັງຈາກກຳນົດ (XCS-2299) ລະຫັດການປະກອບທີ່ຂຽນດ້ວຍມືທີ່ວາງປ້າຍຊື່ທົ່ວໂລກພາຍໃນລຳດັບການປະກອບທີ່ແຍກອອກມາຈາກການສະສົມຂອງຂັ້ນຕອນອາດຈະບໍ່ໄດ້ຮັບການປ່ຽນຕຳແໜ່ງຢ່າງຖືກຕ້ອງ.
ອຸປະຕິເຫດທີ່ຜ່ອນຄາຍ (XCS-2287) ການນໍາໃຊ້ທາງເລືອກ -merlad ອາດຈະເຮັດໃຫ້ຕົວເຊື່ອມຕໍ່ຂັດໃນເວລາທີ່ການເພີ່ມປະສິດທິພາບການຜ່ອນຄາຍການໂດດຫາງພະຍາຍາມເອົາຄໍາແນະນໍາ ret ທີ່ບໍ່ແມ່ນໃນຕອນທ້າຍຂອງພາກສ່ວນໃດຫນຶ່ງ.
ຂັດຂ້ອງໃນເວລາທີ່ການເພີ່ມປະສິດທິພາບປ້າຍກຳກັບເປັນຄ່າ (XCS-2282) ລະຫັດທີ່ໃຊ້ “Labels as values” ການຂະຫຍາຍພາສາ GNU C ອາດຈະເຮັດໃຫ້ການເພີ່ມປະສິດທິພາບຂອງ abstraction ຂັ້ນຕອນການຂັດຂ້ອງ, ໂດຍມີຂໍ້ຜິດພາດໃນການແກ້ໄຂໄລຍະ VMA ທີ່ໄດ້ກໍານົດໄວ້.
ບໍ່ດັ່ງນັ້ນ const (XCS-2271) ຕົ້ນແບບສໍາລັບການເລີ່ມຕົ້ນ () ແລະຫນ້າທີ່ອື່ນໆຈາກ ບໍ່ລະບຸຕົວຊີ້ບອກຄ່າໃຊ້ຈ່າຍທີ່ບໍ່ແມ່ນມາດຕະຖານໃນຕົວຊີ້ສະຕຣິງທີ່ສົ່ງຄືນເມື່ອຄຸນສົມບັດ inprogmem -monist-data ຖືກປິດໃຊ້ງານ. ກະລຸນາຮັບຊາບວ່າດ້ວຍອຸປະກອນ avrxmega3 ແລະ avertin, ຄຸນສົມບັດນີ້ຈະຖືກເປີດໃຊ້ຢ່າງຖາວອນ.
ເຄື່ອງເລີ່ມຕົ້ນທີ່ເສຍໄປ (XCS-2269) ເມື່ອຕົວແປຫຼາຍກວ່າໜຶ່ງຕົວແປຢູ່ໃນໜ່ວຍການແປຖືກວາງໄວ້ໃນພາກ (ໃຊ້ພາກສ່ວນ ຫຼືຄຸນລັກສະນະ ((ພາກ))), ແລະຕົວແປດັ່ງກ່າວທຳອິດແມ່ນສູນ ຫຼື ບໍ່ມີຕົວແປ, ຕົວກຳນົດເບື້ອງຕົ້ນສຳລັບຕົວແປອື່ນໃນໜ່ວຍການແປດຽວກັນ. ທີ່ຖືກຈັດໃສ່ໃນພາກດຽວກັນໄດ້ຖືກສູນເສຍໄປ.
ເວີຊັ່ນ 2.29 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.20
ຜິດພາດກັບຄໍາສັ່ງຍາວ (XCS-1983) ໃນເວລາທີ່ການນໍາໃຊ້ເປົ້າຫມາຍ AVR, ຄອມພິວເຕີອາດຈະຢຸດເຊົາການ a file ບໍ່ພົບຂໍ້ຜິດພາດ, ຖ້າເສັ້ນຄໍາສັ່ງມີຂະຫນາດໃຫຍ່ທີ່ສຸດແລະມີຕົວອັກສອນພິເສດເຊັ່ນຄໍາເວົ້າ, backslashes, ແລະອື່ນໆ.
ບໍ່ໄດ້ມອບໝາຍພາກສ່ວນ rodata (XCS-1920) ຕົວເຊື່ອມຕໍ່ AVR ລົ້ມເຫລວໃນການມອບໝາຍໜ່ວຍຄວາມຈຳສຳລັບພາກສ່ວນ rodata ແບບກຳນົດເອງ ເມື່ອສ້າງສຳລັບສະຖາປັດຕະຍະກຳ avrxmega3 ແລະ avrtiny, ອາດຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດການທັບຊ້ອນຂອງໜ່ວຍຄວາມຈຳ.
ເວີຊັ່ນ 2.19 (ການປ່ອຍຄວາມປອດໄພທີ່ມີປະໂຫຍດ)
ບໍ່ມີ.
ລຸ້ນ 2.10
ການຍົກຍ້າຍລົ້ມເຫລວ (XCS-1891) ຜູ້ຈັດສັນທີ່ເຫມາະສົມທີ່ສຸດແມ່ນການປ່ອຍໃຫ້ຄວາມຊົງຈໍາ 'ຂຸມ' ຢູ່ໃນລະຫວ່າງພາກສ່ວນຫຼັງຈາກການຜ່ອນຄາຍຕົວເຊື່ອມຕໍ່. ນອກເຫນືອຈາກຄວາມຊົງຈໍາທີ່ແຕກແຍກ, ນີ້ຈະເພີ່ມຄວາມເປັນໄປໄດ້ຂອງຄວາມລົ້ມເຫຼວຂອງການຍ້າຍຕົວເຊື່ອມຕໍ່ທີ່ກ່ຽວຂ້ອງກັບການກະໂດດຂອງ pc-relative jumps ຫຼືການໂທອອກຈາກຂອບເຂດ.
ຄໍາແນະນໍາບໍ່ປ່ຽນແປງໂດຍການຜ່ອນຄາຍ (XCS-1889) Linker relaxation ບໍ່ໄດ້ເກີດຂຶ້ນສໍາລັບການໂດດຫຼືໂທຫາຄໍາແນະນໍາທີ່ເປົ້າຫມາຍຈະກາຍເປັນສາມາດບັນລຸໄດ້ຖ້າຫາກວ່າຜ່ອນຄາຍ.
ຫາຍໄປ ການທໍາງານ (XCSE-388) ຄໍານິຍາມຫຼາຍຈາກ ເຊັ່ນ: clock_ div_ t ແລະ clock_prescale_set (), ບໍ່ໄດ້ຖືກກໍານົດໄວ້ສໍາລັບອຸປະກອນ, ລວມທັງ ATmega324PB, ATmega328PB, ATtiny441, ແລະ ATtiny841.
ບໍ່ມີມາໂຄຣ preprocessor macros_ xcs _MODE_, _xcs VERSION, _xc, ແລະ xcs ບໍ່ໄດ້ຖືກກໍານົດໂດຍອັດຕະໂນມັດໂດຍ compiler. ເຫຼົ່ານີ້ແມ່ນມີໃນປັດຈຸບັນ.
ລຸ້ນ 2.05
ການລວບລວມຂໍ້ມູນພາຍໃນຜິດພາດ (XCS-1822) ເມື່ອສ້າງພາຍໃຕ້ Windows, ຂໍ້ຜິດພາດຂອງຕົວລວບລວມຂໍ້ມູນພາຍໃນອາດຈະຖືກຜະລິດໃນເວລາທີ່ເພີ່ມປະສິດທິພາບລະຫັດ.
ກວດບໍ່ພົບ RAM overflow (XCS-1800, XCS-1796) ໂປລແກລມທີ່ເກີນ RAM ທີ່ມີຢູ່ບໍ່ຖືກກວດພົບໂດຍ compiler ໃນບາງສະຖານະການ, ສົ່ງຜົນໃຫ້ລະຫັດ runtime ລົ້ມເຫລວ.
ໜ່ວຍຄວາມຈຳແຟລດຖືກລະເວັ້ນ (XCS-1792) ສໍາລັບອຸປະກອນ avrxmega3 ແລະ avrtiny, ບາງສ່ວນຂອງຫນ່ວຍຄວາມຈໍາ flash ອາດຈະຖືກປະໄວ້ໂດຍ MPLAB X IDE.
ລົ້ມເຫລວໃນການປະຕິບັດຫຼັກ (XCS-1788) ໃນບາງສະຖານະການທີ່ໂປລແກລມບໍ່ມີຕົວແປທົ່ວໂລກກໍານົດ, ລະຫັດເລີ່ມຕົ້ນຂອງ runtime ບໍ່ໄດ້ອອກແລະຫນ້າທີ່ຕົ້ນຕໍ () ບໍ່ເຄີຍມາຮອດ.
ຂໍ້ມູນຄວາມຈຳບໍ່ຖືກຕ້ອງ (XCS-1787) ສໍາລັບອຸປະກອນ avrxmega3 ແລະ avrtiny, ໂຄງການຂະຫນາດ avr ກໍາລັງລາຍງານວ່າຂໍ້ມູນແບບອ່ານເທົ່ານັ້ນກໍາລັງໃຊ້ RAM ແທນທີ່ຈະເປັນຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ.
ການອ່ານຄວາມຊົງຈໍາຂອງໂປຣແກຣມບໍ່ຖືກຕ້ອງ (XCS-1783) ໂຄງການທີ່ລວບລວມສໍາລັບອຸປະກອນທີ່ມີຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມທີ່ມີແຜນທີ່ເຂົ້າໄປໃນພື້ນທີ່ທີ່ຢູ່ຂໍ້ມູນແລະກໍານົດວັດຖຸໂດຍໃຊ້ macro/attribute PROGMEM ອາດຈະອ່ານວັດຖຸເຫຼົ່ານີ້ຈາກທີ່ຢູ່ທີ່ບໍ່ຖືກຕ້ອງ.
ຂໍ້ຜິດພາດພາຍໃນກັບຄຸນລັກສະນະ (XCS-1773) ມີຂໍ້ຜິດພາດພາຍໃນເກີດຂຶ້ນຖ້າທ່ານກໍານົດວັດຖຸຕົວຊີ້ດ້ວຍ
_at () ຫຼື attribute() tokens ລະຫວ່າງຊື່ຕົວຊີ້ແລະປະເພດການອ້າງອີງ, ສໍາລັບການຍົກຕົວຢ່າງ.ample, char *
_at ( 0x80015 0) cp; ດຽວນີ້ການເຕືອນໄພໄດ້ຖືກອອກຖ້າລະຫັດດັ່ງກ່າວພົບ.
ລົ້ມເຫລວໃນການປະຕິບັດຫຼັກ (XCS-1780, XCS-1767, XCS-1754) ການນໍາໃຊ້ຕົວແປ EEPROM ຫຼືກໍານົດ fuses ໂດຍໃຊ້ config pragma ອາດຈະເຮັດໃຫ້ເກີດການເລີ່ມຕົ້ນຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງແລະ / ຫຼືຖືກລັອກການປະຕິບັດໂຄງການໃນລະຫັດເລີ່ມຕົ້ນຂອງ runtime, ກ່ອນທີ່ຈະເຖິງ main () .
Fuse ຜິດພາດກັບອຸປະກອນຂະຫນາດນ້ອຍ (XCS-1778, XCS-1742) ອຸປະກອນ attiny4/5/9/10/20/40 ມີຄວາມຍາວຂອງຟິວທີ່ບໍ່ຖືກຕ້ອງທີ່ລະບຸໄວ້ໃນສ່ວນຫົວຂອງມັນ. files ທີ່ນໍາໄປສູ່ຄວາມຜິດພາດຂອງຕົວເຊື່ອມຕໍ່ໃນເວລາທີ່ພະຍາຍາມສ້າງລະຫັດທີ່ກໍານົດ fuses.
ຄວາມຜິດຂອງການແບ່ງສ່ວນ (XCS-1777) ຄວາມຜິດຂອງການແບ່ງສ່ວນຢ່າງຕໍ່ເນື່ອງໄດ້ຖືກແກ້ໄຂແລ້ວ.
Assembler crash (XCS-1761) ເຄື່ອງປະກອບ avr-as ອາດຈະຂັດຂື້ນເມື່ອ compiler ເຮັດວຽກພາຍໃຕ້ Ubuntu 18.
ບໍ່ໄດ້ລຶບລ້າງວັດຖຸ (XCS-1752) ວັດຖຸໄລຍະເວລາການເກັບຮັກສາແບບຄົງທີ່ທີ່ບໍ່ໄດ້ໃຊ້ໃນເບື້ອງຕົ້ນອາດຈະບໍ່ຖືກລຶບລ້າງໂດຍລະຫັດເລີ່ມຕົ້ນຂອງ runtime.
ບໍ່ສົນໃຈຂໍ້ມູນຈຳເພາະອຸປະກອນທີ່ຂັດກັນ (XCS-1749) ຄອມພີວເຕີບໍ່ໄດ້ສ້າງຂໍ້ຜິດພາດເມື່ອຕົວເລືອກສະເພາະອຸປະກອນຫຼາຍອັນຖືກໃຊ້ ແລະຊີ້ບອກອຸປະກອນຕ່າງໆ.
ຄວາມຈໍາເສຍຫາຍໂດຍ heap (XCS-1748) ສັນຍາລັກເລີ່ມຕົ້ນ heap_ ຖືກຕັ້ງບໍ່ຖືກຕ້ອງ, ສົ່ງຜົນໃຫ້ຄວາມເປັນໄປໄດ້ຂອງຕົວແປທໍາມະດາຖືກທໍາລາຍໂດຍ heap.
ການຍ້າຍຕົວເຊື່ອມຕໍ່ຜິດພາດ (XCS-1739) ຄວາມຜິດພາດການຍ້າຍຕົວເຊື່ອມຕໍ່ອາດຈະຖືກປ່ອຍອອກມາເມື່ອລະຫັດມີ rjmp ຫຼື rcall ທີ່ມີເປົ້າໝາຍຢູ່ຫ່າງກັນ 4k bytes.
ລຸ້ນ 2.00
ບໍ່ມີ.
ບັນຫາທີ່ຮູ້ຈັກ
ຕໍ່ໄປນີ້ແມ່ນຂໍ້ຈໍາກັດໃນການເຮັດວຽກຂອງ compiler. ເຫຼົ່ານີ້ອາດຈະເປັນຂໍ້ຈໍາກັດການເຂົ້າລະຫັດທົ່ວໄປ, ຫຼື
deviations ຈາກຂໍ້ມູນທີ່ມີຢູ່ໃນຄູ່ມືຂອງຜູ້ໃຊ້. ປ້າຍວົງເລັບຢູ່ໃນຫົວຂໍ້ແມ່ນການກໍານົດບັນຫານັ້ນໃນຖານຂໍ້ມູນການຕິດຕາມ. ນີ້ອາດຈະເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານຕ້ອງການຕິດຕໍ່ສະຫນັບສະຫນູນ. ລາຍການເຫຼົ່ານັ້ນທີ່ບໍ່ມີປ້າຍກຳກັບແມ່ນຂໍ້ຈຳກັດທີ່ອະທິບາຍເຖິງການດຳເນີນງານຂອງໂໝດ ແລະ ອາດຈະຍັງຄົງມີຜົນບັງຄັບໃຊ້ຢ່າງຖາວອນ.
ການເຊື່ອມໂຍງ MPLAB X IDE
ການເຊື່ອມໂຍງ MPLAB IDE ຖ້າ Compiler ຈະຖືກໃຊ້ຈາກ MPLAB IDE, ຫຼັງຈາກນັ້ນທ່ານຕ້ອງຕິດຕັ້ງ MPLAB IDE ກ່ອນທີ່ຈະຕິດຕັ້ງ Compiler.
ການສ້າງລະຫັດ
ການຈັດສັນໜ່ວຍຄວາມຈຳ PA ລົ້ມເຫລວ (XCS-2881) ເມື່ອນໍາໃຊ້ຕົວເພີ່ມປະສິດທິພາບການ abstraction ຂັ້ນຕອນ, ຕົວເຊື່ອມຕໍ່ອາດຈະລາຍງານຄວາມຜິດພາດການຈັດສັນຫນ່ວຍຄວາມຈໍາເມື່ອຂະຫນາດລະຫັດຢູ່ໃກ້ກັບຈໍານວນຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມທີ່ມີຢູ່ໃນອຸປະກອນ, ເຖິງແມ່ນວ່າໂຄງການຄວນຈະເຫມາະສົມກັບພື້ນທີ່ທີ່ມີຢູ່.
Smart-IO (XCS-2872) ບໍ່ສະຫຼາດຫຼາຍ ຄຸນສົມບັດ smart-io ຂອງ compiler ຈະສ້າງລະຫັດທີ່ຖືກຕ້ອງແຕ່ຍ່ອຍທີ່ດີທີ່ສຸດສໍາລັບຟັງຊັນ sprint ຖ້າຄຸນສົມບັດ coast-data-in-proem ໄດ້ຖືກປິດໃຊ້ງານຫຼືຖ້າອຸປະກອນມີແຟດທັງຫມົດຂອງມັນຢູ່ໃນຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ.
Smart-IO (XCS-2869) ອັດສະລິຍະໜ້ອຍກວ່າ ຄຸນສົມບັດ smart-io ຂອງ compiler ຈະສ້າງລະຫັດທີ່ຖືກຕ້ອງແຕ່ເໝາະສົມທີ່ສຸດເມື່ອຕົວເລືອກ -floe ແລະ -fno-buil tin ຖືກໃຊ້ທັງສອງ.
ການຈັດວາງຂໍ້ມູນແບບອ່ານເທົ່ານັ້ນທີ່ເໝາະສົມທີ່ສຸດ (XCS-2849) ປະຈຸບັນຕົວເຊື່ອມຕໍ່ບໍ່ຮູ້ຈັກພາກສ່ວນຄວາມຈຳ APPCODE ແລະ APPDATA, ຫຼື ພາກສ່ວນ [No-]Read-While-Write ໃນແຜນທີ່ໜ່ວຍຄວາມຈຳ. ດັ່ງນັ້ນ, ມີໂອກາດຫນ້ອຍທີ່ຕົວເຊື່ອມຕໍ່ອາດຈະຈັດສັນຂໍ້ມູນທີ່ອ່ານເທົ່ານັ້ນໃນພື້ນທີ່ບໍ່ເຫມາະສົມຂອງຫນ່ວຍຄວາມຈໍາ. ໂອກາດຂອງຂໍ້ມູນທີ່ໃສ່ຜິດຈະເພີ່ມຂຶ້ນຖ້າຄຸນສົມບັດ coast-data-in-pragma ຖືກເປີດໃຊ້, ໂດຍສະເພາະຖ້າຄຸນສົມບັດ coast-data-in-config-mapped-proem ຖືກເປີດໃຊ້ເຊັ່ນກັນ. ຄຸນສົມບັດເຫຼົ່ານີ້ສາມາດຖືກປິດໃຊ້ງານໄດ້ຖ້າຕ້ອງການ.
ວັດຖຸ file ຄໍາສັ່ງປະມວນຜົນ (XCS-2863) ຄໍາສັ່ງໃນວັດຖຸ files ຈະຖືກປຸງແຕ່ງໂດຍຕົວເຊື່ອມຕໍ່ອາດຈະແຕກຕ່າງກັນໂດຍອີງໃສ່ການນໍາໃຊ້ການເພີ່ມປະສິດທິພາບການ abstraction ຂັ້ນຕອນ (-mpa ທາງເລືອກ). ນີ້ຈະມີຜົນກະທົບພຽງແຕ່ລະຫັດທີ່ກໍານົດຫນ້າທີ່ອ່ອນແອໃນທົ່ວຫຼາຍໂມດູນ.
Linker error ກັບ absolute (XCS-2777) ເມື່ອວັດຖຸໄດ້ຖືກເຮັດໃຫ້ຢ່າງແທ້ຈິງຢູ່ໃນທີ່ຢູ່ໃນຕອນເລີ່ມຕົ້ນຂອງ RAM ແລະວັດຖຸທີ່ບໍ່ໄດ້ກໍານົດໄວ້ຍັງຖືກກໍານົດ, ຂໍ້ຜິດພາດຂອງຕົວເຊື່ອມຕໍ່ອາດຈະເກີດຂື້ນ.
ID ປຸກສັ້ນ (XCS-2775) ສໍາລັບອຸປະກອນ ATA5700/2, ການລົງທະບຽນ PHID0/1 ຖືກກໍານົດພຽງແຕ່ວ່າກວ້າງ 16 ບິດ, ແທນທີ່ຈະກວ້າງ 32 ບິດ.
Linker crash ໃນເວລາທີ່ສັນຍາລັກໂທ (XCS-2758) ຕົວເຊື່ອມຕໍ່ອາດຈະຂັດຖ້າຕົວເລືອກໄດເວີ -merlad ຖືກໃຊ້ເມື່ອລະຫັດແຫຼ່ງເອີ້ນສັນຍາລັກທີ່ຖືກກໍານົດໂດຍໃຊ້ຕົວເຊື່ອມຕໍ່ -Wl, –defsym.
ການເລີ່ມຕົ້ນບໍ່ຖືກຕ້ອງ (XCS-2679) ມີຄວາມແຕກຕ່າງກັນລະຫວ່າງບ່ອນທີ່ຄ່າເບື້ອງຕົ້ນສໍາລັບບາງວັດຖຸທີ່ມີຂະໜາດທົ່ວໂລກ/static byte ຖືກຈັດໃສ່ໃນໜ່ວຍຄວາມຈຳຂໍ້ມູນ ແລະບ່ອນທີ່ຕົວແປຈະເຂົ້າເຖິງໃນເວລາແລ່ນ.
ເລີ່ມຕັ້ງຫວ່າງເປົ່າບໍ່ຖືກຕ້ອງ (XCS-2652) ໃນກໍລະນີທີ່ສະຕຣິງຫົວຂໍ້ສໍາລັບການປ່ຽນໂດຍລະບຸໄວ້ () ປະກອບດ້ວຍສິ່ງທີ່ເບິ່ງຄືວ່າເປັນຕົວເລກທີ່ເລື່ອນໄດ້ໃນຮູບແບບເລກກໍາລັງແລະມີລັກສະນະທີ່ບໍ່ຄາດຄິດຫຼັງຈາກຕົວອັກສອນ e, ຫຼັງຈາກນັ້ນທີ່ຢູ່ຫວ່າງເປົ່າ, ຖ້າໃຫ້, ຈະຊີ້ໄປຫາຕົວອັກສອນຫຼັງຈາກ. e ແລະບໍ່ແມ່ນ e ຕົວຂອງມັນເອງ. ຕົວຢ່າງample: stated(“hooey”, ເປົ່າ); ຈະສົ່ງຜົນໃຫ້ຫວ່າງເປົ່າຊີ້ໄປຫາຕົວອັກສອນ x.
ການເອີ້ນຟັງຊັນທາງອ້ອມທີ່ບໍ່ດີ (XCS-2628) ໃນບາງກໍລະນີ, ການເອີ້ນຟັງຊັນທີ່ເຮັດຜ່ານຕົວຊີ້ຟັງຊັນທີ່ເກັບໄວ້ເປັນສ່ວນຫນຶ່ງຂອງໂຄງສ້າງອາດຈະລົ້ມເຫລວ.
strtof ຕອບຄ່າສູນສໍາລັບການ floats ເລກຖານສິບຫົກ (XCS-2626) ຫໍສະໝຸດປະຕິບັດໜ້າທີ່ strtof() et al ແລະ scanf() et al, ຈະປ່ຽນເລກຖານສິບຫົກທີ່ເລື່ອນໄດ້ສະເໝີ ທີ່ບໍ່ລະບຸຕົວເລກເປັນເລກກຳລັງ.
ສູນ. ຕົວຢ່າງample: stator(“Owl”, &empty); ຈະສົ່ງຄ່າ 0, ບໍ່ແມ່ນ 1.
ຂໍ້ຄວາມທີ່ປຶກສາ stack ບໍ່ຖືກຕ້ອງ (XCS-2542, XCS-2541) ໃນບາງກໍລະນີ, ການເຕືອນທີ່ປຶກສາ stack ກ່ຽວກັບ recursion ຫຼື stack indeterminate ຖືກນໍາໃຊ້ (ເປັນໄປໄດ້ໂດຍຜ່ານການນໍາໃຊ້ຂອງ alloca()) ບໍ່ໄດ້ຖືກປ່ອຍອອກມາ.
ຄວາມລົ້ມເຫລວກັບລະຫັດຂັດຂວາງຊໍ້າກັນ (XCS-2421) ບ່ອນທີ່ຟັງຊັນຂັດຂວາງຫຼາຍກວ່າຫນຶ່ງມີສ່ວນດຽວກັນ, compiler ອາດຈະມີຜົນຜະລິດສໍາລັບຟັງຊັນຂັດຂວາງຫນຶ່ງໂທຫາອີກອັນຫນຶ່ງ. ນີ້ຈະສົ່ງຜົນໃຫ້ການລົງທະບຽນການໂທ-clobbered ທັງຫມົດຖືກບັນທຶກໄວ້ໂດຍບໍ່ຈໍາເປັນ, ແລະການຂັດຂວາງຈະຖືກເປີດໃຊ້ເຖິງແມ່ນວ່າກ່ອນທີ່ epilogue ຂອງຕົວຈັດການຂັດຂວາງໃນປະຈຸບັນຈະດໍາເນີນການ, ເຊິ່ງອາດຈະເຮັດໃຫ້ລະຫັດລົ້ມເຫລວ.
Const objects ບໍ່ໄດ້ຢູ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ (XCS-2408) ສໍາລັບໂຄງການ avrxmega3 ແລະ avertins unidealized const objects ແມ່ນຖືກຈັດໃສ່ໃນຫນ່ວຍຄວາມຈໍາຂອງຂໍ້ມູນ, ເຖິງແມ່ນວ່າຄໍາເຕືອນຊີ້ໃຫ້ເຫັນວ່າພວກເຂົາໄດ້ຖືກຈັດໃສ່ໃນຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ. ນີ້ຈະບໍ່ສົ່ງຜົນກະທົບຕໍ່ອຸປະກອນທີ່ບໍ່ມີຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມທີ່ແຜນທີ່ເຂົ້າໄປໃນພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂອງຂໍ້ມູນ, ແລະມັນຈະສົ່ງຜົນກະທົບຕໍ່ວັດຖຸໃດໆທີ່ເລີ່ມຕົ້ນ.
ຜົນຜະລິດທີ່ບໍ່ດີກັບເສັ້ນທາງ DFP ທີ່ບໍ່ຖືກຕ້ອງ (XCS-2376) ຖ້າ compiler ຖືກເອີ້ນດ້ວຍເສັ້ນທາງ DFP ທີ່ບໍ່ຖືກຕ້ອງແລະ 'spec' file ມີຢູ່ສໍາລັບອຸປະກອນທີ່ເລືອກ, compiler ບໍ່ໄດ້ລາຍງານຊຸດຄອບຄົວອຸປະກອນທີ່ຂາດຫາຍໄປແລະແທນທີ່ຈະເລືອກ 'spec'. file, ຊຶ່ງຫຼັງຈາກນັ້ນອາດຈະເຮັດໃຫ້ຜົນຜະລິດທີ່ບໍ່ຖືກຕ້ອງ. 'ສະເພາະ' files ອາດຈະບໍ່ທັນສະໄຫມກັບ DFPs ທີ່ແຈກຢາຍແລະມີຈຸດປະສົງເພື່ອໃຊ້ກັບການທົດສອບ compiler ພາຍໃນເທົ່ານັ້ນ.
ບໍ່ກວດພົບການທັບຊ້ອນຂອງໜ່ວຍຄວາມຈຳ (XCS-1966) compiler ບໍ່ກວດພົບການທັບຊ້ອນຂອງຫນ່ວຍຄວາມຈໍາຂອງວັດຖຸທີ່ເຮັດຢ່າງແທ້ຈິງຢູ່ໃນທີ່ຢູ່ (ຜ່ານ ()) ແລະວັດຖຸອື່ນໆໂດຍໃຊ້ຕົວລະບຸພາກ () ແລະທີ່ເຊື່ອມຕໍ່ກັບທີ່ຢູ່ດຽວກັນ.
ຄວາມລົ້ມເຫຼວຂອງຟັງຊັນຫ້ອງສະໝຸດ ແລະ _meme (XCS-1763) ເອີ້ນວ່າຟັງຊັນ limbic float ທີ່ມີການໂຕ້ຖຽງຢູ່ໃນພື້ນທີ່ທີ່ຢູ່ _memo ອາດຈະລົ້ມເຫລວ. ຈື່ໄວ້ວ່າ routines ຫໍສະຫມຸດໄດ້ຖືກເອີ້ນຈາກບາງ C operator, ດັ່ງນັ້ນ, example, ລະຫັດຕໍ່ໄປນີ້ໄດ້ຮັບຜົນກະທົບ: ກັບຄືນ regFloatVar > memxFloatVar;
ການປະຕິບັດ limbic ຈໍາກັດ (AVRTC-731) ສໍາລັບຜະລິດຕະພັນ ATTiny4/5/9/10/20/40, ມາດຕະຖານການປະຕິບັດຫ້ອງສະຫມຸດ C / Math ໃນ limbic ແມ່ນຈໍາກັດຫຼາຍຫຼືບໍ່ມີ.
ຂໍ້ຈໍາກັດຄວາມຈໍາຂອງໂຄງການ (AVRTC-732) ຮູບພາບຫນ່ວຍຄວາມຈໍາຂອງໂຄງການເກີນ 128 kb ແມ່ນສະຫນັບສະຫນູນໂດຍລະບົບຕ່ອງໂສ້ເຄື່ອງມື; ຢ່າງໃດກໍຕາມ, ມີຕົວຢ່າງທີ່ຮູ້ຈັກຂອງ linker aborts ໂດຍບໍ່ມີການຜ່ອນຄາຍແລະບໍ່ມີຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ເປັນປະໂຫຍດແທນທີ່ຈະສ້າງ stubs ຫນ້າທີ່ທີ່ກໍານົດໄວ້ໃນເວລາທີ່ທາງເລືອກ -relax ຖືກນໍາໃຊ້.
ການຈຳກັດພື້ນທີ່ຊື່ (AVRTC-733) ສະຖານທີ່ທີ່ຢູ່ທີ່ມີຊື່ໄດ້ຮັບການສະຫນັບສະຫນູນໂດຍລະບົບຕ່ອງໂສ້ເຄື່ອງມື, ຂຶ້ນກັບຂໍ້ຈໍາກັດທີ່ໄດ້ກ່າວມາໃນພາກແນະນໍາຂອງຜູ້ໃຊ້ພິເສດຄຸນສົມບັດປະເພດ.
ເຂດເວລາ ໄດ້ ຫນ້າທີ່ຫ້ອງສະຫມຸດສົມມຸດ GMT ແລະບໍ່ສະຫນັບສະຫນູນເຂດເວລາທ້ອງຖິ່ນ, ດັ່ງນັ້ນເວລາທ້ອງຖິ່ນ () ຈະກັບຄືນເວລາດຽວກັນກັບ gummite (), ສໍາລັບ exampເລ.
ການຊ່ວຍເຫຼືອລູກຄ້າ
file///Applications/microehip/xc8/v 2 .40/docs/Read me_X C 8_ ສໍາລັບ A VR. htm
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
ຊອບແວສັງລວມ MICROCHIP MPLAB XC8 C [pdf] ຄູ່ມືເຈົ້າຂອງ MPLAB XC8 C, MPLAB XC8 C Compiler Software, Compiler Software, ຊອບແວ |