MICROCHIP MPLAB XC8 C შემდგენელი პროგრამული უზრუნველყოფა
ეს დოკუმენტი შეიცავს მნიშვნელოვან ინფორმაციას MPLAB XC8 C კომპილატორთან დაკავშირებით, როდესაც მიზნად ისახავს მიკროჩიპის AVR მოწყობილობებს.
გთხოვთ, წაიკითხოთ იგი ამ პროგრამული უზრუნველყოფის გაშვებამდე. იხილეთ MPLAB XC8 C კომპილერის გამოშვების შენიშვნები PIC დოკუმენტისთვის, თუ თქვენ იყენებთ კომპილერს 8-ბიტიანი PIC მოწყობილობებისთვის.
დასრულდაview
შესავალი
Microchip MPLAB® XC8 C კომპილერის ეს გამოშვება შეიცავს რამდენიმე ახალ ფუნქციას, შეცდომების გამოსწორებას და ახალი მოწყობილობის მხარდაჭერას.
აშენების თარიღი
ამ შემდგენლის ვერსიის ოფიციალური აშენების თარიღი არის 3 წლის 2022 ივლისი.
Წინა ვერსია
MPLAB XC8 C კომპილერის წინა ვერსია იყო 2.39, ფუნქციური უსაფრთხოების შემდგენელი, აშენებული 27 წლის 2022 იანვარს. წინა სტანდარტული შემდგენელი იყო ვერსია 2.36, აშენებული 27 წლის 2022 იანვარს.
ფუნქციური უსაფრთხოების სახელმძღვანელო
ფუნქციური უსაფრთხოების სახელმძღვანელო MPLAB XC შემდგენელებისთვის ხელმისაწვდომია დოკუმენტაციის პაკეტში ფუნქციონალური უსაფრთხოების ლიცენზიის შეძენისას.
კომპონენტის ლიცენზიები და ვერსიები
MPLAB® XC8 C შემდგენელი AVR MCU ინსტრუმენტებისთვის დაწერილი და განაწილებულია GNU General Public License (GPL) ქვეშ, რაც ნიშნავს, რომ მისი საწყისი კოდი თავისუფლად ნაწილდება და ხელმისაწვდომია საზოგადოებისთვის. GNU GPL-ის ქვეშ არსებული ხელსაწყოების წყაროს კოდი შეიძლება ჩამოიტვირთოს მიკროჩიპისგან დამოუკიდებლად 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 10.15.5. ბინარები Windows-ისთვის კოდირებულია. ბინარები Mac OShave-ისთვის კოდირებულია და დამოწმებულია ნოტარიულად.
თუ თქვენ იყენებთ ქსელის სალიცენზიო სერვერს, მხოლოდ კომპიუტერები ოპერაციული სისტემებით, რომლებსაც მხარდაჭერილი აქვთ შემდგენელები, შეიძლება გამოყენებულ იქნას სალიცენზიო სერვერის მასპინძლობისთვის. xclm 2.0 ვერსიით, ქსელის ლიცენზირების სერვერი შეიძლება დაინსტალირდეს Microsoft Windows Server პლატფორმაზე, მაგრამ სალიცენზიო სერვერს არ სჭირდება ოპერაციული სისტემის სერვერის ვერსიაზე მუშაობა.
მოწყობილობები მხარდაჭერილია
ეს კომპილერი მხარს უჭერს ყველა 8-ბიტიან AVR MCU მოწყობილობას, რომლებიც ცნობილია გამოშვების დროს. იხილეთ (შემდგენელის დოკუმენტების დირექტორიაში) ყველა მხარდაჭერილი მოწყობილობის სია. ესენი fileასევე ჩამოთვლილია კონფიგურაციის ბიტის პარამეტრები თითოეული მოწყობილობისთვის.
გამოცემები და ლიცენზიის განახლებები
MPLAB XC8 შემდგენელი შეიძლება გააქტიურდეს როგორც ლიცენზირებული (PRO) ან არალიცენზირებული (უფასო) პროდუქტი. თქვენ უნდა შეიძინოთ აქტივაციის გასაღები თქვენი კომპილერის ლიცენზირებისთვის. ლიცენზია იძლევა ოპტიმიზაციის უფრო მაღალ დონეს უფასო პროდუქტთან შედარებით. არალიცენზირებული შემდგენელი შეიძლება მუშაობდეს განუსაზღვრელი ვადით ლიცენზიის გარეშე.
MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელი უნდა გააქტიურდეს მიკროჩიპიდან შეძენილი ფუნქციური უსაფრთხოების ლიცენზიით. შემდგენელი არ იმუშავებს ამ ლიცენზიის გარეშე. გააქტიურების შემდეგ, შეგიძლიათ აირჩიოთ ნებისმიერი ოპტიმიზაციის დონე და გამოიყენოთ კომპილერის ყველა ფუნქცია. MPLAB XC ფუნქციური უსაფრთხოების შემდგენელის ეს გამოშვება მხარს უჭერს ქსელის სერვერის ლიცენზიას.
იხილეთ MPLAB XC C შემდგენელების ინსტალაცია და ლიცენზირება (DS50002059) დოკუმენტი ლიცენზიის ტიპებისა და ლიცენზიით შემდგენლის ინსტალაციის შესახებ ინფორმაციისთვის.
ინსტალაცია და აქტივაციის
აგრეთვე იხილეთ მიგრაციის საკითხები და შეზღუდვები სექციები მნიშვნელოვანი ინფორმაციისთვის უახლესი ლიცენზიის მენეჯერის შესახებ, რომელიც შედის ამ შემდგენელთან.
თუ იყენებთ MPLAB IDE-ს, დარწმუნდით, რომ დააინსტალირეთ MPLAB X IDE-ის უახლესი ვერსია 5.0 ან უფრო ახალი ამ ხელსაწყოს ინსტალაციამდე. გამოდით IDE-დან კომპილერის დაყენებამდე. გაუშვით .exe (Windows), .run (Linux) ან აპის (macOS) შემდგენელის ინსტალერი აპლიკაცია, მაგ. XC8-1.00.11403-windows.exe და მიჰყევით ეკრანზე მითითებებს.
რეკომენდირებულია ნაგულისხმევი ინსტალაციის დირექტორია. თუ იყენებთ Linux-ს, უნდა დააინსტალიროთ შემდგენელი ტერმინალის გამოყენებით და root ანგარიშიდან. დააინსტალირეთ macOS ანგარიშის გამოყენებით ადმინისტრატორის პრივილეგიებით.
გააქტიურება ახლა ინსტალაციისგან ცალკე ხორციელდება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტის ლიცენზიის მენეჯერი MPLAB® XC C შემდგენელებისთვის (DS52059).
თუ თქვენ აირჩევთ შემდგენელის გაშვებას შეფასების ლიცენზიის ქვეშ, ახლა მიიღებთ გაფრთხილებას შედგენისას, როდესაც თქვენი შეფასების პერიოდის დასრულებიდან 14 დღეში იქნებით. იგივე გაფრთხილება გაიცემა, თუ თქვენი HPA გამოწერის დასრულებიდან 14 დღის განმავლობაში ხართ.
XC ქსელის სალიცენზიო სერვერი არის ცალკე ინსტალერი და არ შედის ერთი მომხმარებლის შემდგენელის ინსტალერში.
XC ლიცენზიის მენეჯერი ახლა მხარს უჭერს მცურავი ქსელის ლიცენზიების როუმინგს. მობილურის მომხმარებლებისთვის განკუთვნილი ეს ფუნქცია საშუალებას აძლევს მცურავ ლიცენზიას მოკლე დროში გამოვიდეს ქსელიდან. ამ ფუნქციის გამოყენებით შეგიძლიათ გათიშოთ ქსელი და კვლავ გამოიყენოთ თქვენი MPLAB XC შემდგენელი. ამ ფუნქციის შესახებ მეტი ინფორმაციისთვის იხილეთ XCLM ინსტალაციის doc საქაღალდე. MPLAB X IDE მოიცავს ლიცენზიების ფანჯარას (ინსტრუმენტები > ლიცენზიები) როუმინგის ვიზუალურად მართვისთვის.
ინსტალაციის საკითხების მოგვარება
თუ Windows-ის რომელიმე ოპერაციული სისტემის ქვეშ შემდგენლის დაყენებისას სირთულეები გაქვთ, სცადეთ შემდეგი წინადადებები.
- გაუშვით ინსტალაცია ადმინისტრატორის სახით.
- დააყენეთ საინსტალაციო აპლიკაციის ნებართვები „სრული კონტროლი“. (დააწკაპუნეთ მარჯვენა ღილაკით file, აირჩიეთ თვისებები, უსაფრთხოების ჩანართი, აირჩიეთ მომხმარებელი, რედაქტირება.)
- დააყენეთ დროებითი საქაღალდის ნებართვები „სრული კონტროლი!
Temp საქაღალდის ადგილმდებარეობის დასადგენად, Run ბრძანებაში ჩაწერეთ %temp% (Windows logo key + R). ეს გაიხსნება ა file explorer დიალოგი, რომელიც აჩვენებს ამ დირექტორიას და საშუალებას მოგცემთ განსაზღვროთ ამ საქაღალდის გზა.
შემდგენელი დოკუმენტაცია
შემდგენელის მომხმარებლის სახელმძღვანელო შეიძლება გაიხსნას HTML გვერდიდან, რომელიც იხსნება თქვენს ბრაუზერში MPLAB X IDE დაფაზე დახმარების ლურჯი ღილაკის დაწკაპუნებისას, როგორც ეს ნაჩვენებია ეკრანის სურათზე.
თუ თქვენ აშენებთ 8-ბიტიან AVR სამიზნეებს, MPLAB® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელო AVR® MCU-სთვის შეიცავს ინფორმაციას შემდგენელის ვარიანტებისა და ფუნქციების შესახებ, რომლებიც გამოიყენება ამ არქიტექტურისთვის.
მომხმარებელთა მხარდაჭერა
Microchip მიესალმება შეცდომების შესახებ შეტყობინებებს, წინადადებებს ან კომენტარებს ამ შემდგენლის ვერსიასთან დაკავშირებით. გთხოვთ, მიმართოთ შეცდომების შესახებ შეტყობინებებს ან ფუნქციების მოთხოვნას მხარდაჭერის სისტემის მეშვეობით.
დოკუმენტაციის განახლებები
MPLAB XC8 დოკუმენტაციის ონლაინ და განახლებული ვერსიებისთვის, გთხოვთ, ეწვიოთ Microchip-ის ონლაინ ტექნიკურ დოკუმენტაციას webსაიტი.
ახალი ან განახლებული AVR დოკუმენტაცია ამ გამოშვებაში:
- MUSL საავტორო უფლებების შესახებ შეტყობინება
- MPLAB XC C შემდგენელების ინსტალაცია და ლიცენზირება (რევიზია M)
- MPLAB XC8 მომხმარებლის სახელმძღვანელო ჩაშენებული ინჟინრებისთვის – AVR MCU (რევიზია A)
- MPLAB XC8 C შემდგენელის მომხმარებლის სახელმძღვანელო AVR MCU-სთვის (რევიზია F)
- მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო სახელმძღვანელო (რევიზია B)
მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო სახელმძღვანელო აღწერს მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის მიერ განსაზღვრული ფუნქციების ქცევას და ინტერფეისს, ასევე ბიბლიოთეკის ტიპებისა და მაკროების დანიშნულ გამოყენებას. ამ ინფორმაციის ნაწილი ადრე შეტანილი იყო MPLAB® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელოში AVR® MCU-სთვის. მოწყობილობის სპეციფიკური ბიბლიოთეკის ინფორმაცია კვლავ შეიცავს ამ შემდგენლის სახელმძღვანელოში.
თუ ახლახან იწყებთ 8-ბიტიანი მოწყობილობებით და MPLAB XC8 C შემდგენელით, MPLAB® XC8 მომხმარებლის!-ის სახელმძღვანელო ჩაშენებული ინჟინრებისთვის - AVR® MCUs (DS50003108) შეიცავს ინფორმაციას MPLAB X IDE-ში პროექტების დაყენებისა და კოდის ჩაწერის შესახებ. თქვენი პირველი MPLAB XC8 C პროექტისთვის. ეს სახელმძღვანელო ახლა ნაწილდება შემდგენელთან ერთად.
Hamate-ის მომხმარებლის სახელმძღვანელო შეტანილია ამ გამოშვებაში დოკუმენტების დირექტორიაში. ეს სახელმძღვანელო განკუთვნილია მათთვის, ვინც მუშაობს Hamate-ს, როგორც ცალკე აპლიკაციის სახით.
რა არის ახალი
შემდეგი არის ახალი AVR-სამიზნე ფუნქციები, რომლებსაც შემდგენელი ახლა მხარს უჭერს. ვერსიის ნომერი ქვესათაურებში მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც მხარს უჭერს შემდეგ ფუნქციებს.
ვერსია 2.40
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ახლა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32, AVR64DD48, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX, AVRXNUMXDDXNUMX. RXNUMXEAXNUMX.
გაუმჯობესებული პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის (PA) ოპტიმიზაციის ინსტრუმენტი გაუმჯობესდა ისე, რომ კოდი, რომელიც შეიცავს ფუნქციის გამოძახების ინსტრუქციას ( გამოძახება ) ) შეიძლება გამოიკვეთოს. ეს მოხდება მხოლოდ იმ შემთხვევაში, თუ სტეკი არ გამოიყენება არგუმენტების გადასაცემად და ფუნქციიდან დაბრუნებული მნიშვნელობის მისაღებად. სტეკი გამოიყენება ცვლადი არგუმენტების სიით ფუნქციის გამოძახებისას ან ფუნქციის გამოძახებისას, რომელიც უფრო მეტ არგუმენტს იღებს, ვიდრე ამ მიზნისთვის განკუთვნილი რეგისტრებია. ამ ფუნქციის გამორთვა შესაძლებელია monk-pa-outline-calls ოფციის გამოყენებით, ან პროცედურული აბსტრაქცია შეიძლება მთლიანად გამორთოთ ობიექტისთვის. file ან ფუნქცია -monk-pa-on--ის გამოყენებითfile და -mo.-pa-on-ფუნქცია შესაბამისად, ან nipa ატრიბუტის გამოყენებით (nipa specifier) შერჩევით ფუნქციებთან ერთად
კოდის დაფარვის მაკრო შემდგენელი ახლა განსაზღვრავს მაკრო __CODECOV-ს, თუ მითითებულია მოქმედი mcodecov ვარიანტი.
მეხსიერების დაჯავშნის ვარიანტი xc8-cc დრაივერი ახლა მიიღებს -mreserve=space@start: end ოფციას AVR სამიზნეების შექმნისას. ეს პარამეტრი ინახავს მითითებულ მეხსიერების დიაპაზონს მონაცემთა ან პროგრამის მეხსიერების სივრცეში, რაც ხელს უშლის ლინკერს ამ ზონაში კოდის ან ობიექტების დასახლებაში.
უფრო ჭკვიანი ჭკვიანი IO Smart IO ფუნქციებში განხორციელდა რამდენიმე გაუმჯობესება, მათ შორის printf-ის ძირითადი კოდის ზოგადი შესწორებები, %n კონვერტაციის სპეციფიკატორის დამოუკიდებელ ვარიანტად განხილვა, vararg pop რუტინების დაკავშირება მოთხოვნისამებრ, მონაცემთა მოკლე ტიპების გამოყენებით, სადაც შესაძლებელია, IO ფუნქციის არგუმენტების დასამუშავებლად. და საერთო კოდის ფაქტორინგი ველის სიგანეში და სიზუსტით დამუშავებაში. ამან შეიძლება გამოიწვიოს მნიშვნელოვანი კოდის და მონაცემთა დაზოგვა, ასევე გაზარდოს IO-ს შესრულების სიჩქარე.
ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
ქსელის სერვერის ლიცენზია MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელის ეს გამოშვება მხარს უჭერს ქსელის სერვერის ლიცენზიას.
ვერსია 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 შემდგენელი მომხმარებლის სახელმძღვანელო/ან AVR® MCU აღარ შეიცავს ამ სტანდარტული ფუნქციების დოკუმენტაციას. ეს ინფორმაცია ახლა შეგიძლიათ იხილოთ Microchip Unified Standard Library Reference Guide-ში. გაითვალისწინეთ, რომ avr-libc-ის მიერ ადრე განსაზღვრული ზოგიერთი ფუნქცია აღარ არის ხელმისაწვდომი. (იხილეთ ბიბლიოთეკა):'. ფუნქციონალობა...)
ჭკვიანი IO როგორც ახალი ერთიანი ბიბლიოთეკების ნაწილი, IO ფუნქციები ბეჭდვისა და სკანირების ოჯახებში ახლა პერსონალურად გენერირებულია თითოეულ კონსტრუქციაზე, იმის მიხედვით, თუ როგორ გამოიყენება ეს ფუნქციები პროგრამაში. ამან შეიძლება მნიშვნელოვნად შეამციროს პროგრამის მიერ გამოყენებული რესურსები.
ჭკვიანი IO დახმარების ვარიანტი ჭკვიანი IO ფუნქციების ზარების ანალიზის დროს (როგორიცაა printf () ან scanf () ), შემდგენელი ყოველთვის ვერ განსაზღვრავს ფორმატის სტრიქონიდან ან არგუმენტებიდან გამოიტანს ზარისთვის საჭირო კონვერტაციის სპეციფიკატორებს. ადრე, შემდგენელი ყოველთვის არ აკეთებდა ვარაუდებს და უზრუნველყოფდა, რომ სრულად ფუნქციონალური IO ფუნქციები იყოს დაკავშირებული პროგრამის საბოლოო სურათთან. დამატებულია ახალი – msmart-io-format=fmt ოფცია, რათა შემდგენელმა შეძლოს მომხმარებლის მიერ ინფორმირებული კონვერტაციის სპეციფიკატორების შესახებ, რომლებიც გამოიყენება ჭკვიანი IO ფუნქციების მიერ, რომელთა გამოყენება ორაზროვანია, რაც ხელს უშლის ზედმეტად გრძელი IO რუტინების დაკავშირებას. (დამატებითი ინფორმაციისთვის იხილეთ smart-io-format Option.)
მორგებული სექციების განთავსება ადრე, -Wl, -section-start ოფცია ათავსებდა მითითებულ განყოფილებას მოთხოვნილ მისამართზე მხოლოდ მაშინ, როდესაც ლინკერის სკრიპტი განსაზღვრავდა გამომავალ განყოფილებას იმავე სახელით. როდესაც ეს ასე არ იყო, განყოფილება განთავსდა ლინკერის მიერ არჩეულ მისამართზე და ეს ვარიანტი არსებითად იგნორირებული იყო. ახლა ეს პარამეტრი იქნება დაცული ყველა მორგებული განყოფილებისთვის, მაშინაც კი, თუ ლინკერის სკრიპტი არ განსაზღვრავს განყოფილებას. ამასთან, გაითვალისწინეთ, რომ სტანდარტული სექციებისთვის, ასეთი. ტექსტი,. bss ან . მონაცემების მიხედვით, საუკეთესო მორგებულ ალოკატორს კვლავ ექნება სრული კონტროლი მათ განთავსებაზე და ოფციონს არანაირი ეფექტი არ ექნება. გამოიყენეთ -Wl, -Tsection=add ვარიანტი, როგორც აღწერილია მომხმარებლის სახელმძღვანელოში.
ვერსია 2.32
დასტის სახელმძღვანელო ხელმისაწვდომია PRO შემდგენელის ლიცენზიით, შემდგენელის სტეკის სახელმძღვანელო ფუნქცია შეიძლება გამოყენებულ იქნას პროგრამის მიერ გამოყენებული ნებისმიერი დატის მაქსიმალური სიღრმის შესაფასებლად. იგი აყალიბებს და აანალიზებს პროგრამის გამოძახების გრაფიკს, განსაზღვრავს თითოეული ფუნქციის დასტას გამოყენებას და აწარმოებს ანგარიშს, საიდანაც პროგრამის მიერ გამოყენებული სტეკების სიღრმის დასკვნა შეიძლება. ეს ფუნქცია ჩართულია -mchp-stack-usage ბრძანების ხაზის ვარიანტის მეშვეობით. სტეკის გამოყენების შეჯამება იბეჭდება შესრულების შემდეგ. დეტალური სტეკის ანგარიში ხელმისაწვდომია რუკაზე file, რომელიც შეიძლება მოითხოვოს ჩვეულებრივი გზით.
ახალი მოწყობილობის მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMX, AVRXNUMXBDR AVRXNUMXDBXNUMX.
ამოღებული მოწყობილობის მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგი AVR ნაწილებისთვის: AVR16DA28, AVR16DA32 და, AVR16DA48.
ვერსია 2.31
არცერთი.
ვერსია 2.30
ახალი ვარიანტი მონაცემთა ინიციალიზაციის თავიდან ასაცილებლად ახალი -mno-data-ini t დრაივერის ვარიანტი ხელს უშლის მონაცემთა ინიციალიზაციას და bss სექციების გასუფთავებას. ის მუშაობს do_ copy_ მონაცემების და d o_ clear_ bss სიმბოლოების გამოშვების ჩახშობით ასამბლეაში files, რაც თავის მხრივ ხელს შეუშლის ლინკერის მიერ ამ რუტინების ჩართვას.
გაძლიერებული ოპტიმიზაცია განხორციელდა ოპტიმიზაციის მთელი რიგი გაუმჯობესება, მათ შორის ზედმეტი დაბრუნების ინსტრუქციების წაშლა, ზოგიერთი ნახტომის ამოღება skip-if-bit-is ინსტრუქციის შემდეგ და გაუმჯობესებული პროცედურული აბსტრაქცია და ამ პროცესის გამეორების შესაძლებლობა.
ამ ოპტიმიზაციის ზოგიერთი ოპტიმიზაციის გასაკონტროლებლად ახლა უკვე ხელმისაწვდომია დამატებითი ოფციები, კერძოდ -f განყოფილების წამყვანები, რაც საშუალებას იძლევა სტატიკური ობიექტების წვდომის შესრულება ერთ სიმბოლოსთან შედარებით; -mpai derations=n, რომელიც საშუალებას იძლევა შეიცვალოს პროცედურული აბსტრაქციის გამეორებების რაოდენობა ნაგულისხმევი 2-დან; და, -mpa- call cost- shortcall, რომელიც ახორციელებს უფრო აგრესიულ პროცედურულ აბსტრაქციას, იმ იმედით, რომ ლინკერს შეუძლია დაამშვიდოს ხანგრძლივი ზარები. ამ ბოლო ვარიანტს შეუძლია გაზარდოს კოდის ზომა, თუ ძირითადი ვარაუდები არ განხორციელდება.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48, 128BAV64
ამოღებული მოწყობილობის მხარდაჭერა მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგ AVR ნაწილებზე: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616TAC, ATA6617TAC, ATA664251, ATA.
ვერსია 2.29 (ფუნქციური უსაფრთხოების გამოშვება)
სათაური file კომპილერის ჩაშენებული ინსტრუმენტებისთვის იმისათვის, რომ დარწმუნდეთ, რომ შემდგენელი შეძლებს შეესაბამებოდეს ენის სპეციფიკაციებს, როგორიცაა MISRA, სათაური file, რომელიც ავტომატურად შედის , განახლებულია. ეს სათაური შეიცავს პროტოტიპებს ყველა ჩაშენებული ფუნქციისთვის, როგორიცაა _buil tin _avrnop () და _buil tin_ avr delay_ ციკლები () . ზოგიერთი ჩაშენებული შეიძლება არ იყოს MISRA-ს შესაბამისი; მათი გამოტოვება შესაძლებელია კომპილატორის ბრძანების ხაზში განმარტების _Xe_ STRICT_ MISRA-ს დამატებით. ჩაშენებული ნაწილები და მათი დეკლარაციები განახლებულია ფიქსირებული სიგანის ტიპების გამოსაყენებლად.
ვერსია 2.20
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: ATTINY1624, ATTINY1626 და ATTINY1627.
უკეთესად მორგებული განაწილება საუკეთესო მორგების ალოკატორი (BFA) კომპილატორში გაუმჯობესდა ისე, რომ სექციები გამოიყოს იმ თანმიმდევრობით, რაც უკეთეს ოპტიმიზაციას იძლევა. BFA ახლა მხარს უჭერს დასახელებულ მისამართებს და უკეთ ამუშავებს მონაცემთა ინიციალიზაციას.
გაუმჯობესებული პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის ოპტიმიზაცია ახლა შესრულებულია უფრო მეტი კოდის თანმიმდევრობებზე. წინა სიტუაციები, როდესაც ამ ოპტიმიზაციას შესაძლოა გაზრდილიყო კოდის ზომა, მოგვარებული იყო ოპტიმიზაციის კოდის გაცნობით ლინკერის ნაგვის შეგროვების პროცესის შესახებ.
AVR ასამბლერის არარსებობა AVR Assembler აღარ შედის ამ განაწილებაში.
ვერსია 2.19 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.10
კოდის დაფარვა ეს გამოცემა შეიცავს კოდის დაფარვის ფუნქციას, რომელიც ხელს უწყობს პროექტის წყაროს კოდის შესრულების ხარისხს. მის გასააქტიურებლად გამოიყენეთ ვარიანტი -mcodecov=ram. თქვენს აპარატურაზე პროგრამის შესრულების შემდეგ, კოდის დაფარვის ინფორმაცია დაჯგუფდება მოწყობილობაში და ეს შეიძლება გადაიცეს და ნაჩვენები იყოს MPLAB X IDE-ში კოდის დაფარვის მოდულის მეშვეობით. იხილეთ IDE დოკუმენტაცია ამ მოდულის შესახებ ინფორმაციის მისაღებად. #pragma mcodecov შეიძლება გამოყენებულ იქნას შემდგომი ფუნქციების გამოსარიცხად დაფარვის ანალიზიდან. იდეალურ შემთხვევაში, პრაგმა უნდა დაემატოს დასაწყისში file რომ მთლიანად გამოირიცხოს file დაფარვის ანალიზიდან. ალტერნატიულად, ატრიბუტი ( (mcodecov) ) შეიძლება გამოყენებულ იქნას კონკრეტული ფუნქციის გამოსარიცხად დაფარვის ანალიზიდან.
მოწყობილობის აღწერა files ახალი მოწყობილობა file მოუწოდა avr chipinfo. html მდებარეობს შემდგენელის განაწილების docs დირექტორიაში. ეს file ჩამოთვლის კომპილერის მიერ მხარდაჭერილ ყველა მოწყობილობას. დააწკაპუნეთ მოწყობილობის სახელზე და ის გაიხსნება გვერდი, სადაც ნაჩვენებია ამ მოწყობილობისთვის ყველა დასაშვები კონფიგურაციის ბიტის პარამეტრი/მნიშვნელობის წყვილი, მაგ.amples.
პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის ოპტიმიზაცია, რომელიც ანაცვლებს ასამბლეის კოდის საერთო ბლოკებს ამ ბლოკის ამოღებულ ასლზე ზარებით, დაემატა კომპილატორს. ისინი შესრულებულია ცალკეული აპლიკაციით, რომელსაც ავტომატურად გამოიძახებს შემდგენელი 2, 3 ან ოპტიმიზაციის დონის არჩევისას. ეს ოპტიმიზაცია ამცირებს კოდის ზომას, მაგრამ მათ შეუძლიათ შეამცირონ შესრულების სიჩქარე და კოდის გამართვა.
პროცედურული აბსტრაქცია შეიძლება გამორთოთ ოპტიმიზაციის მაღალ დონეზე ოფციის -mno-pa გამოყენებით, ან შეიძლება ჩართოთ ოპტიმიზაციის დაბალ დონეზე (თქვენი ლიცენზიის მიხედვით) -mpa გამოყენებით. ის შეიძლება გამორთოთ ობიექტისთვის file -mno-pa-on-ის გამოყენებითfile=fileსახელი, ან გამორთულია ფუნქციისთვის -mno-pa on function= ფუნქციის გამოყენებით.
თქვენი საწყისი კოდის შიგნით, პროცედურული აბსტრაქცია შეიძლება გამორთოთ ფუნქციისთვის _ ატრიბუტის ( (nopa)) გამოყენებით ფუნქციის განსაზღვრებით, ან _nopa გამოყენებით, რომელიც ფართოვდება ატრიბუტამდე ( (nopa, noinline)) და ამით ხელს უშლის ფუნქციის ჩასმას. და არის ჩასმული კოდის აბსტრაქცია.
ჩაკეტვის ბიტის მხარდაჭერა პრაგმაში #pragma კონფიგურაცია ახლა შეიძლება გამოყენებულ იქნას AVR დაბლოკვის ბიტების და ასევე სხვა კონფიგურაციის ბიტების დასაზუსტებლად. შეამოწმეთ avr ჩიპის ინფორმაცია. html file (ზემოთ ნახსენები) პარამეტრის/მნიშვნელობის წყვილებისთვის ამ პრაგმაში გამოსაყენებლად.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი ნაწილებისთვის: AVR28DA128, AVR64DA128, AVR32DA128 და AVR48DA128.
ვერსია 2.05
მეტი ბიტი თქვენი ფულისთვის ამ შემდგენელისა და ლიცენზიის მენეჯერის macOS ვერსია ახლა 64-ბიტიანი აპლიკაციაა. ეს უზრუნველყოფს, რომ შემდგენელი დააინსტალირებს და იმუშავებს გაფრთხილების გარეშე macOS-ის ბოლო ვერსიებზე.
Const ობიექტები პროგრამის მეხსიერებაში შემდგენელს ახლა შეუძლია განათავსოს const-კვალიფიცირებული ობიექტები პროგრამის Flash მეხსიერებაში, ვიდრე ისინი განთავსებული იყოს RAM-ში. შემდგენელი შეცვლილია ისე, რომ კონსტ-კვალიფიცირებული გლობალური მონაცემები ინახება პროგრამის ფლეშ მეხსიერებაში და ამ მონაცემებზე წვდომა შესაძლებელია პირდაპირ და ირიბად შესაბამისი პროგრამის მეხსიერების ინსტრუქციების გამოყენებით. ეს ახალი ფუნქცია ჩართულია ნაგულისხმევად, მაგრამ მისი გამორთვა შესაძლებელია -mno-const-data-in-progmem ვარიანტის გამოყენებით. avrxmega3 და avrtiny არქიტექტურისთვის, ეს ფუნქცია არ არის საჭირო და ყოველთვის გამორთულია, რადგან პროგრამის მეხსიერება დატანილია ამ მოწყობილობების მონაცემთა მისამართების სივრცეში.
სტანდარტული უფასოდ ამ კომპილერის არალიცენზირებული (უფასო) ვერსიები ახლა იძლევა ოპტიმიზაციას მე-2 დონის ჩათვლით. ეს საშუალებას მისცემს მსგავსი, თუმცა არა იდენტური, გამომავალი, რაც ადრე შესაძლებელი იყო სტანდარტული ლიცენზიის გამოყენებით.
მოგესალმებით AVRASM2 AVRASM2 ასამბლეერი 8-ბიტიანი მოწყობილობებისთვის ახლა შედის XC8 შემდგენელის ინსტალერში. ამ ასამბლერს არ იყენებს XC8 შემდგენელი, მაგრამ ხელმისაწვდომია ხელნაწერი ასამბლეის წყაროზე დაფუძნებული პროექტებისთვის.
ახალი მოწყობილობის მხარდაჭერა მხარდაჭერა ხელმისაწვდომია შემდეგი ნაწილებისთვის: ATMEGA1608, ATMEGA1609, ATMEGA808 და ATMEGA809.
ვერსია 2.00
უმაღლესი დონის მძღოლი ახალი დრაივერი, სახელად xc8-cc, ახლა ზის წინა avr-gcc დრაივერის და xc8 დრაივერის ზემოთ და მას შეუძლია გამოიძახოს შესაბამისი შემდგენელი სამიზნე მოწყობილობის შერჩევის საფუძველზე. ეს დრაივერი იღებს GCC სტილის ვარიანტებს, რომლებიც ან ითარგმნება ან გადაეცემა შესრულებულ შემდგენელს. ეს დრაივერი საშუალებას აძლევს მსგავსი სემანტიკის მსგავსი პარამეტრების გამოყენებას ნებისმიერ AVR ან PIC სამიზნეზე და, შესაბამისად, არის კომპილატორის გამოძახების რეკომენდებული გზა. საჭიროების შემთხვევაში, ძველი avr-gcc დრაივერი შეიძლება პირდაპირ გამოიძახოთ ძველი სტილის ვარიანტების გამოყენებით, რომლებიც მიღებული იყო კომპილერის ადრინდელ ვერსიებში.
საერთო C ინტერფეისი ამ შემდგენელს ახლა შეუძლია შეესაბამებოდეს MPLAB Common C ინტერფეისს, რაც საშუალებას აძლევს წყაროს კოდის უფრო ადვილად პორტირებას ყველა MPLAB XC შემდგენელში. -mext=cci ოფცია ითხოვს ამ ფუნქციას, რაც საშუალებას აძლევს ალტერნატიულ სინტაქსს მრავალი ენის გაფართოებისთვის.
ბიბლიოთეკარის ახალი მძღოლი ახალი ბიბლიოთეკარის დრაივერი განთავსებულია წინა PIC ბიბლიოთეკარის და AVR avr-ar ბიბლიოთეკარის ზემოთ. ეს დრაივერი იღებს GCC-არქივერის სტილის ვარიანტებს, რომლებიც ან ითარგმნება ან გადაეცემა ბიბლიოთეკარს, რომელიც შესრულდება. ახალი დრაივერი საშუალებას აძლევს მსგავსი სემანტიკის პარამეტრების გამოყენებას ნებისმიერი PIC ან AVR ბიბლიოთეკის შესაქმნელად ან მანიპულირებისთვის. file და ამდენად არის რეკომენდირებული გზა ბიბლიოთეკარის გამოსაძახებლად. თუ საჭიროა მემკვიდრეობითი პროექტებისთვის, წინა ბიბლიოთეკარის გამოძახება შეიძლება უშუალოდ ძველი სტილის ვარიანტების გამოყენებით, რომლებიც მიღებული იყო კომპილერის ადრინდელ ვერსიებში.
მიგრაციის საკითხები
ქვემოთ მოცემულია ფუნქციები, რომლებსაც ახლა სხვაგვარად ამუშავებს შემდგენელი. ამ ცვლილებებმა შეიძლება მოითხოვოს თქვენი წყაროს კოდის შეცვლა, თუ კოდი გადაიტანეთ კომპილერის ამ ვერსიაზე. ქვესათაურებში ვერსიის ნომერი მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც მხარს უჭერს შემდგომ ცვლილებებს.
ვერსია 2.40
არცერთი.
ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.36
არცერთი.
ვერსია 2.35
სიმებიანი ბაზების დამუშავება (XCS-2420) XC-ის სხვა შემდგენლებთან თანმიმდევრულობის უზრუნველსაყოფად, XC8 string-to ფუნქციები, როგორიცაა strtol () და ა.შ., აღარ შეეცდება შეყვანის სტრიქონის გარდაქმნას, თუ მითითებული ბაზა 36-ზე დიდია და ამის ნაცვლად დააყენებს errno-ს EINVAL-ზე. C სტანდარტი არ აკონკრეტებს ფუნქციების ქცევას, როდესაც ეს საბაზისო მნიშვნელობა აღემატება.
სიჩქარის შეუსაბამო ოპტიმიზაცია პროცედურული აბსტრაქციის ოპტიმიზაცია ჩართული იყო მე-3 დონის ოპტიმიზაციის არჩევისას (-03). ეს ოპტიმიზაცია ამცირებს კოდის ზომას კოდის სიჩქარის ხარჯზე, ამიტომ არ უნდა შესრულებულიყო. პროექტებმა, რომლებიც იყენებენ ამ ოპტიმიზაციის დონეს, შეიძლება დაინახონ განსხვავებები კოდის ზომასა და შესრულების სიჩქარეში, როდესაც აშენდება ამ გამოშვებით.
ბიბლიოთეკის ფუნქციონირება C ბიბლიოთეკის მრავალი სტანდარტული ფუნქციის კოდი ახლა მომდინარეობს Microchip-ის ერთიანი სტანდარტული ბიბლიოთეკიდან, რომელიც შეიძლება გამოავლინოს განსხვავებული ქცევა ზოგიერთ ვითარებაში ყოფილი avr-libc ბიბლიოთეკის მიერ მოწოდებულთან შედარებით. მაგampამიტომ, აღარ არის საჭირო lprintf_flt ბიბლიოთეკაში ბმული (-print _flt ოფცია), რათა ჩართოთ ფორმატირებული IO მხარდაჭერა float-format specifiers-ისთვის. მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის ჭკვიანი IO ფუნქციები ამ ვარიანტს ზედმეტი ხდის. გარდა ამისა, აღარ არის საჭირო _p სუფიქსირებული რუტინების გამოყენება სტრიქონების და მეხსიერების ფუნქციებისთვის (მაგ. strcpy_P () და ა.შ. .. ), რომლებიც მოქმედებენ const სტრიქონებზე ფლეშში. სტანდარტული C რუტინები (მაგ. strcpy ()) სწორად იმუშავებს ასეთ მონაცემებთან, როდესაც ჩართულია const-data-in-program-memory ფუნქცია.
ვერსია 2.32
არცერთი.
ვერსია 2.31
არცერთი.
ვერსია 2.30
არცერთი.
ვერსია 2.29 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.20
შეიცვალა DFP განლაგება შემდგენელი ახლა იღებს განსხვავებულ განლაგებას, რომელსაც იყენებენ DFP-ები (მოწყობილობის საოჯახო პაკეტები). ეს ნიშნავს, რომ ძველი DFP შეიძლება არ იმუშაოს ამ გამოშვებასთან და ძველი შემდგენელები ვერ შეძლებენ უახლესი DFP-ების გამოყენებას.
ვერსია 2.19 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.10
არცერთი
ვერსია 2.05
Const ობიექტები პროგრამის მეხსიერებაში გაითვალისწინეთ, რომ ნაგულისხმევად, const-qualfied ობიექტები განთავსდება და ხელმისაწვდომი იქნება პროგრამის მეხსიერებაში (როგორც აქ არის აღწერილი). ეს გავლენას მოახდენს თქვენი პროექტის ზომასა და შესრულების სიჩქარეზე, მაგრამ უნდა შეამციროს RAM-ის გამოყენება. საჭიროების შემთხვევაში, ამ ფუნქციის გამორთვა შესაძლებელია -mnoconst- da ta-in-progmem ოფციის გამოყენებით.
ვერსია 2.00
კონფიგურაციის ფუჟები მოწყობილობის კონფიგურაციის საფუარები ახლა შეიძლება დაპროგრამდეს კონფიგურაციის პრაგმის გამოყენებით, რასაც მოჰყვება პარამეტრის მნიშვნელობის წყვილები დაუკრავენ მდგომარეობის დასაზუსტებლად, მაგ.
#pragma config WDT0N = SET
#pragma კონფიგურაცია B0DLEVEL = B0DLEVEL_4V3
აბსოლუტური ობიექტები და ფუნქციები ობიექტები და ფუნქციები ახლა შეიძლება განთავსდეს მეხსიერებაში კონკრეტულ მისამართზე CCI _at (მისამართი) სპეციფიკატორის გამოყენებით, მაგ.ample: #შეიცავს int foobar at(Ox800100); char at(Ox250) get ID(int offset) { … } ამ სპეციფიკატორის არგუმენტი უნდა იყოს მუდმივი, რომელიც წარმოადგენს მისამართს, რომელზეც განთავსდება პირველი ბაიტი ან ინსტრუქცია. RAM მისამართები მითითებულია 0x800000 ოფსეტურით. ჩართეთ CCI ამ ფუნქციის გამოყენებისთვის.
შეწყვეტის ფუნქციის ახალი სინტაქსი შემდგენელი ახლა იღებს CCI შეწყვეტის (num) სპეციფიკატორს, რათა მიუთითოს, რომ C ფუნქციები არის შეფერხების დამმუშავებლები. დამახასიათებელი იღებს შეწყვეტის ნომერს, მაგample: #შეიცავს void interrupt(SPI STC_ vect _num) spi Isr(void) { … }
დაფიქსირებული საკითხები
ქვემოთ მოცემულია შესწორებები, რომლებიც გაკეთდა შემდგენელში. ამან შეიძლება გამოასწოროს შეცდომები გენერირებულ კოდში ან შეცვალოს შემდგენელის მოქმედება იმით, რაც განკუთვნილი იყო ან მითითებული იყო მომხმარებლის სახელმძღვანელოში. ვერსიის ნომერი ქვესათაურებში მიუთითებს შემდგენლის პირველ ვერსიაზე, რომელიც შეიცავს შესწორებებს შემდგომი პრობლემებისთვის. სათაურში ფრჩხილებში ჩასმული იარლიყ(ებ)ი არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს სასარგებლო, თუ თქვენ გჭირდებათ დაუკავშირდეთ მხარდაჭერას.
გაითვალისწინეთ, რომ მოწყობილობასთან დაკავშირებული ზოგიერთი პრობლემა გამოსწორებულია მოწყობილობასთან დაკავშირებულ Device Family Pack-ში (DFP). იხილეთ MPLAB პაკეტის მენეჯერი DFP-ებში განხორციელებული ცვლილებებისა და უახლესი პაკეტების ჩამოტვირთვის შესახებ ინფორმაციისთვის.
ვერსია 2.40
ძალიან მოდუნებული (XCS-2876) -mrelax ოფციის გამოყენებისას შემდგენელი არ ანაწილებდა ზოგიერთ განყოფილებას ერთად, რაც იწვევს კოდის ნაკლებად ოპტიმალურ ზომებს. ეს შეიძლება მომხდარიყო კოდით, რომელიც იყენებდა ახალ MUSL ბიბლიოთეკებს ან სუსტი სიმბოლოებით.
რუკების ფუნქცია არ არის გამორთული, როგორც ეს მითითებულია გაფრთხილებაში (XCS-2875) cost-data-in-config mappedprogmem ფუნქცია დამოკიდებულია იმაზე, რომ ჩართულია cost-data-in-proem ფუნქცია. თუ cost-data-ipconfig-mapped-proem ფუნქცია ცალსახად ჩართული იყო ოფციის გამოყენებით და cost-data-inprogmem ფუნქცია გამორთული იყო, ბმულის ნაბიჯი ვერ მოხერხდა, მიუხედავად გამაფრთხილებელი შეტყობინებისა, რომელშიც ნათქვამია, რომ უარყოფითი მონაცემები-in-config-mapped- proem ფუნქცია ავტომატურად გამორთული იყო, რაც მთლად სწორი არ იყო. const-data-in-config-mapped-proem ფუნქცია ახლა სრულად გამორთულია ამ სიტუაციაში.
DFP იცვლება NVMCTRL (XCS-2848) სწორი წვდომისთვის AVR64EA მოწყობილობების მიერ გამოყენებული გაშვების კოდი არ ითვალისწინებდა, რომ NVMCTRL რეგისტრი იმყოფებოდა კონფიგურაციის ცვლილების დაცვის (CCP) ქვეშ და არ შეეძლო IO SFR-ის დაყენება იმ გვერდზე, რომელსაც იყენებს const-data-in configmapped-proem შემდგენელი. თვისება. AVR-Ex_DFP 2.2.55 ვერსიაში განხორციელებული ცვლილებები საშუალებას მისცემს გაშვების გაშვების კოდს სწორად ჩაწეროს ამ რეესტრში.
DFP იცვლება ფლეშ რუკების თავიდან ასაცილებლად (XCS-2847) დანერგილია AVR128DA28/32/48/64 Silicon Errata-ში (DS80000882) მოხსენებული ფლეშ რუკების მოწყობილობის მახასიათებლებთან დაკავშირებული პრობლემის გამოსავალი. const-data-in-config-mapped-proem compiler ფუნქცია არ იქნება გამოყენებული ნაგულისხმევად დაზარალებული მოწყობილობებისთვის და ეს ცვლილება გამოჩნდება AVR-Ex_DFP ვერსია 2.2.160.
აგების შეცდომა sinhf-ით ან coshf-ით (XCS-2834) sinhf () ან coshf () ბიბლიოთეკის ფუნქციების გამოყენების მცდელობამ გამოიწვია ბმული შეცდომა, რომელიც აღწერს განუსაზღვრელ მითითებას. გამოტოვებული ფუნქცია, რომელიც მითითებულია, ახლა ჩართულია შემდგენელის განაწილებაში.
შეცდომები Nopa-სთან ერთად (XCS-2833) nopa ატრიბუტის გამოყენება ფუნქციით, რომელსაც აქვს მისი ასამბლერის სახელი მითითებული როგორც ()-ის გამოყენებით, გამოიწვია შეცდომის შეტყობინებები ასამბლერისგან. ეს კომბინაცია შეუძლებელია.
მრავალფეროვანი ფუნქციის წარუმატებლობა მაჩვენებლის არგუმენტებით (XCS-2755, XCS-2731) არგუმენტების ცვლადი რაოდენობის მქონე ფუნქციები მოსალოდნელია, რომ 24-ბიტიანი (_memo ტიპის) მაჩვენებლები გადაეცემა ცვლადის არგუმენტების სიაში, როდესაც ჩართულია cost-data-in-proem ფუნქცია. არგუმენტები, რომლებიც მონაცემების მეხსიერების მითითებებს წარმოადგენდნენ, გადადიოდა 16-ბიტიან ობიექტებად, რაც იწვევდა კოდის წარუმატებლობას, როდესაც ისინი საბოლოოდ წაიკითხეს. როდესაც ჩართულია cons data-in-proem ფუნქცია, ყველა 16-ბიტიანი მაჩვენებლის არგუმენტი ახლა გარდაიქმნება 24-ბიტიან პოინტერებად. strtoxxx ბიბლიოთეკის ფუნქციები ვერ ხერხდება (XCS-2620) როდესაც const-data-in-proem ფუნქცია ჩართული იყო, strtoxxx ბიბლიოთეკის ფუნქციებში enter პარამეტრი სათანადოდ არ განახლდა წყაროს სტრიქონების არგუმენტებისთვის, რომლებიც პროგრამის მეხსიერებაში არ არის.
გაფრთხილებები არასწორი ტრანსლებისთვის (XCS-2612) შემდგენელი ახლა გამოუშვებს შეცდომას, თუ ჩართულია cost-in-proem ფუნქცია და სტრიქონის ლიტერალის მისამართი პირდაპირ გადაცემულია მონაცემთა მისამართების სივრცეში (გამოტოვებს const კვალიფიკატორს), მაგ.ample, (uint8 t *) "გამარჯობა სამყარო!". გაფრთხილება ჩნდება, თუ მისამართი შეიძლება იყოს არასწორი, როდესაც const მონაცემთა მაჩვენებელი პირდაპირ გადაცემულია მონაცემთა მისამართების სივრცეში.
არაინიციალიზებული const ობიექტების განთავსება (XCS-2408) არაინიციალიზებული const და const v olatile ობიექტები არ იყო განთავსებული პროგრამის მეხსიერებაში მოწყობილობებზე, რომლებიც ასახავს მათი პროგრამის მთელ ან ნაწილს მონაცემთა მისამართების სივრცეში. ამ მოწყობილობებისთვის, ასეთი ობიექტები ახლა მოთავსებულია პროგრამის მეხსიერებაში, რაც მათ მუშაობას შეესაბამება სხვა მოწყობილობებთან.
ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.36
შეცდომა დაგვიანებისას (XCS-2774) ნაგულისხმევი თავისუფალი რეჟიმის ოპტიმიზაციაში მცირემა ცვლილებებმა ხელი შეუშალა ოპერანდის გამონათქვამების მუდმივ დაკეცვას დაყოვნების ჩაშენებულ ფუნქციებზე, რის შედეგადაც ისინი განიხილება, როგორც არაკონტაქტური და იწვევს შეცდომას: _ buil tin avr delay_ cycles მოსალოდნელია ac ompile. დროის მთელი მუდმივი.
ვერსია 2.35
თანმიმდევრული განაწილება _at-ის გამოყენებით (XCS-2653) ერთიდაიგივე სახელის სექციაში მრავალი ობიექტის ადგილის მიმდებარედ განაწილება და ()-ზე გამოყენება არ მუშაობდა სწორად. მაგample: constchararrl [ ] at tri butte ((sect on(“misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; ღირებულება char arr2[ ] at tri butte ((section(.my s eke”))) = {Oxen, Ox FE }; უნდა განთავსდეს arr2 დაუყოვნებლივ aril-ის შემდეგ.
განყოფილების საწყისი მისამართების მითითება (XCS-2650) -Wal, -section-start ოფცია ჩუმად ვერ ახერხებდა სექციების განთავსებას ნომინირებულ საწყის მისამართზე. ეს პრობლემა დაფიქსირდა ნებისმიერი მორგებული დასახელებული განყოფილებისთვის; თუმცა, ის არ იმუშავებს არცერთ სტანდარტულ სექციებზე, როგორიცაა . ტექსტი ან. bss, რომელიც უნდა განთავსდეს -Wl, -T ვარიანტის გამოყენებით.
ლინკერი იშლება მოდუნებისას (XCS-2647) როდესაც ჩართული იყო -relax ოპტიმიზაცია და იყო კოდის ან მონაცემთა სექციები, რომლებიც არ ჯდებოდა ხელმისაწვდომ მეხსიერებაში, ლინკერი ავარიულ იქნა. ახლა, ასეთ ვითარებაში, ამის ნაცვლად, შეცდომის შეტყობინებები გაიცემა.
ცუდი EEPROM წვდომა (XCS-2629) Leproma _read_ ბლოკის რუტინა არ მუშაობდა სწორად მეგა მოწყობილობებზე, როდესაც ჩართული იყო -monist-data-in-proem ოფცია (რაც ნაგულისხმევი მდგომარეობაა), რის შედეგადაც EEPROM მეხსიერება არ იკითხებოდა სწორად.
მეხსიერების არასწორი განაწილება (XCS-2593, XCS-2651) როდესაც -Text ან -Tata ლინკერის ვარიანტი (მაგampმითითებულია -Wl დრაივერის ოფციონის გამოყენებით გავლილი, შესაბამისი ტექსტის/მონაცემთა რეგიონის წარმოშობა განახლდა; თუმცა, საბოლოო მისამართი არ იყო მორგებული შესაბამისად, რამაც შეიძლება გამოიწვიოს რეგიონის გადამეტება სამიზნე მოწყობილობის მეხსიერების დიაპაზონში.
არასწორი ATtiny შეფერხების კოდი (XCS-2465) როდესაც Tatin მოწყობილობების აშენება და ოპტიმიზაცია გამორთული იყო (-00), შეფერხების ფუნქციებმა შესაძლოა გამოეწვია ოპერანდის დიაპაზონის ასამბლერის შეტყობინებები.
ოფციები არ არის გადაცემული (XCS-2452) -Wl ოფციის გამოყენებისას მრავალი, მძიმით გამოყოფილი ლინკერის ოფციებით, ლინკერის ყველა ვარიანტი არ გადადიოდა ლინკერზე.
შეცდომა პროგრამის მეხსიერების ირიბად წაკითხვისას (XCS-2450) ზოგიერთ შემთხვევაში, შემდგენელმა გამოუშვა შიდა შეცდომა (უცნობი insn), როდესაც კითხულობდა ორი ბაიტის მნიშვნელობას პოინტერიდან პროგრამის მეხსიერებაში.
ვერსია 2.32
ბიბლიოთეკაზე მეორე წვდომა ვერ ხერხდება (XCS-2381) xc8-ar-ის Windows ვერსიის გამოძახება. exe ბიბლიოთეკის არქივი მეორედ წვდომა არსებულ ბიბლიოთეკის არქივზე შესაძლოა ვერ მოხერხდა შეცდომის შეტყობინების გამო სახელის გადარქმევის შეუძლებლობის გამო.
ვერსია 2.31
კომპილერის აუხსნელი წარუმატებლობები (XCS-2367) Windows პლატფორმებზე გაშვებისას, რომლებსაც სისტემის დროებითი დირექტორია დაყენებული ჰქონდა გზაზე, რომელიც მოიცავდა წერტილს'.' სიმბოლო, შესაძლოა შემდგენელმა ვერ შეასრულა.
ვერსია 2.30
გლობალური ეტიკეტები არასწორად განთავსებული კონტურის შემდეგ (XCS-2299) ხელით დაწერილი ასამბლეის კოდი, რომელიც ათავსებს გლობალურ ლეიბლებს ასამბლეის თანმიმდევრობებში, რომლებიც გამოითვლება პროცედურული აბსტრაქციის შედეგად, შესაძლოა არ ყოფილიყო სწორად განლაგებული.
დამამშვიდებელი ავარია (XCS-2287) -merlad ოფციის გამოყენებამ შესაძლოა გამოიწვიოს ლინკერის ავარია, როდესაც კუდის ნახტომის რელაქსაციის ოპტიმიზაცია ცდილობდა წაეშალა ret ინსტრუქცია, რომელიც არ იყო სექციის ბოლოს.
ავარია ლეიბლების მნიშვნელობების ოპტიმიზაციისას (XCS-2282) კოდს, რომელიც იყენებს „ეტიკეტებს, როგორც მნიშვნელობებს“, GNU C ენის გაფართოებას, შესაძლოა გამოეწვია პროცედურული აბსტრაქციის ოპტიმიზაციის ავარია, გამოკვეთილი VMA დიაპაზონის დაფიქსირების შეცდომით.
არც ისე გამძლე (XCS-2271) დაწყების () და სხვა ფუნქციების პროტოტიპები აღარ მიუთითოთ არასტანდარტული ღირებულების კვალიფიკატორი დაბრუნებულ სტრიქონების მაჩვენებლებზე, როდესაც -monist-data inprogmem ფუნქცია გამორთულია. გაითვალისწინეთ, რომ avrxmega3 და avertin მოწყობილობებთან ერთად, ეს ფუნქცია მუდმივად ჩართულია.
დაკარგული ინიციალატორები (XCS-2269) როდესაც თარგმანის ერთეულში ერთზე მეტი ცვლადი მოთავსებულია განყოფილებაში (სექციის ან ატრიბუტის ((სექცია)) გამოყენებით), და პირველი ასეთი ცვლადი იყო ნულოვანი ინიციალიზაცია ან არ გააჩნდა ინიციალატორი, ინიციალიზატორები სხვა ცვლადების იმავე მთარგმნელობით ერთეულში. რომ მოთავსებული იყო იმავე მონაკვეთზე დაიკარგა.
ვერსია 2.29 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.20
შეცდომა გრძელი ბრძანებებით (XCS-1983) AVR სამიზნის გამოყენებისას შემდგენელი შეიძლება შეჩერებულიყო a file შეცდომა ვერ მოიძებნა, თუ ბრძანების სტრიქონი იყო ძალიან დიდი და შეიცავდა სპეციალურ სიმბოლოებს, როგორიცაა ციტატები, უკუღმა და ა.შ.
მინიჭებული rodata განყოფილება (XCS-1920) AVR დამაკავშირებელმა ვერ შეძლო მეხსიერების მინიჭება მორგებული rodata სექციებისთვის avrxmega3 და avrtiny არქიტექტურებისთვის აშენებისას, რაც პოტენციურად წარმოქმნის მეხსიერების გადახურვის შეცდომებს
ვერსია 2.19 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.
ვერსია 2.10
გადატანის წარუმატებლობა (XCS-1891) საუკეთესო მორგებული ალოკატორი იყო მეხსიერების „ხვრელების“ დატოვება განყოფილებებს შორის დამაკავშირებელი რელაქსაციის შემდეგ. მეხსიერების ფრაგმენტაციის გარდა, ამან გაზარდა მაკავშირებლის გადაადგილების უკმარისობის შესაძლებლობა, რომელიც დაკავშირებულია კომპიუტერთან შედარებით ნახტომებთან ან ზარებთან, რომლებიც დიაპაზონის მიღმა აღმოჩნდნენ.
ინსტრუქციები არ გარდაიქმნება რელაქსაციის გზით (XCS-1889) ლინკერის რელაქსაცია არ მომხდარა ნახტომის ან გამოძახების ინსტრუქციებისთვის, რომელთა სამიზნეები ხელმისაწვდომი გახდება მოდუნების შემთხვევაში.
დაკარგული ფუნქციონირება (XCSE-388) რამდენიმე განმარტება , როგორიცაა clock_ div_ t და clock_prescale_set (), არ იყო განსაზღვრული მოწყობილობებისთვის, მათ შორის ATmega324PB, ATmega328PB, ATtiny441 და ATtiny841.
მაკრო აკლია წინასწარი პროცესორის მაკროები _ xcs _MODE_, _xcs VERSION, _xc და xcs არ იყო ავტომატურად განსაზღვრული შემდგენელის მიერ. ესენი ახლა ხელმისაწვდომია.
ვერსია 2.05
შიდა კომპილერის შეცდომა (XCS-1822) Windows-ის ქვეშ აშენებისას, კოდის ოპტიმიზაციისას შესაძლოა წარმოიშვა შიდა შემდგენელი შეცდომა.
RAM-ის გადინება არ არის გამოვლენილი (XCS-1800, XCS-1796) პროგრამები, რომლებიც აღემატებოდა ხელმისაწვდომ RAM-ს, არ იქნა აღმოჩენილი შემდგენელის მიერ ზოგიერთ სიტუაციაში, რამაც გამოიწვია გაშვების კოდის მარცხი.
გამოტოვებული ფლეშ მეხსიერება (XCS-1792) avrxmega3 და avrtiny მოწყობილობებისთვის, ფლეშ მეხსიერების ნაწილები შესაძლოა დაპროგრამებული იყოს MPLAB X IDE-ის მიერ.
ძირითადი (XCS-1788) შესრულება ვერ მოხერხდა ზოგიერთ სიტუაციაში, როდესაც პროგრამას არ ჰქონდა განსაზღვრული გლობალური ცვლადები, გაშვების გაშვების კოდი არ გასულა და მთავარ () ფუნქციას არასოდეს მიუღწევია.
არასწორი მეხსიერების ინფორმაცია (XCS-1787) avrxmega3 და avrtiny მოწყობილობებისთვის, avr-size პროგრამა იუწყებოდა, რომ მხოლოდ წაკითხვის მონაცემები მოიხმარდა RAM-ს პროგრამის მეხსიერების ნაცვლად.
არასწორი პროგრამის მეხსიერების წაკითხვა (XCS-1783) პროექტები, რომლებიც შედგენილია პროგრამული მეხსიერების მქონე მოწყობილობებისთვის, შედგენილია მონაცემთა მისამართების სივრცეში და რომლებიც განსაზღვრავენ ობიექტებს PROGMEM მაკრო/ატრიბუტის გამოყენებით, შესაძლოა წაიკითხონ ეს ობიექტები არასწორი მისამართიდან.
შიდა შეცდომა ატრიბუტებთან (XCS-1773) შიდა შეცდომა მოხდა, თუ თქვენ განსაზღვრეთ მაჩვენებლის ობიექტები
_at () ან ატრიბუტი() ჟეტონები კურსორის სახელსა და გაუქმებულ ტიპს შორის, მაგampლე, char *
_at ( 0x80015 0) cp; ახლა გაიცემა გაფრთხილება, თუ ასეთი კოდი შეგხვდებათ.
ძირითადი (XCS-1780, XCS-1767, XCS-1754) შესრულება ვერ მოხერხდა EEPROM ცვლადების გამოყენებამ ან კონფიგურაციის პრაგმის გამოყენებით საკრავების განსაზღვრამ შესაძლოა გამოიწვიოს მონაცემთა არასწორი ინიციალიზაცია და/ან პროგრამის შესრულების ჩაკეტვა გაშვების გაშვების კოდში, სანამ მთავარ ()-ს მიაღწევს.
დაუკრავის შეცდომა პატარა მოწყობილობებთან (XCS-1778, XCS-1742) attiny4/5/9/10/20/40 მოწყობილობებს ჰქონდათ სათაურში მითითებული არასწორი საკრავის სიგრძე fileეს იწვევს ლინკერის შეცდომებს, როდესაც ცდილობთ კოდის შექმნას, რომელიც განსაზღვრავს საკრავებს.
სეგმენტაციის ხარვეზი (XCS-1777) წყვეტილი სეგმენტაციის ხარვეზი გამოსწორებულია.
ასამბლერის ავარია (XCS-1761) avr-as ასამბლეერი შეიძლება დაიშალა, როდესაც კომპილერი მუშაობდა Ubuntu 18-ში.
ობიექტები არ არის გასუფთავებული (XCS-1752) Unitialized სტატიკური შენახვის ხანგრძლივობის ობიექტები შეიძლება არ იყო გასუფთავებული გაშვების გაშვების კოდით.
კონფლიქტური მოწყობილობის სპეციფიკაცია იგნორირებულია (XCS-1749) შემდგენელი არ ქმნიდა შეცდომას, როდესაც გამოყენებული იყო მოწყობილობის სპეციფიკაციის რამდენიმე ვარიანტი და მიუთითებდა სხვადასხვა მოწყობილობებზე.
მეხსიერების გაფუჭება გროვით (XCS-1748) heap_ start სიმბოლო არასწორად იყო დაყენებული, რის შედეგადაც შესაძლებელი იყო ჩვეულებრივი ცვლადები დაზიანებულიყო გროვის მიერ.
ლინკერის გადატანის შეცდომა (XCS-1739) ლინკერის გადატანის შეცდომა შესაძლოა გამოშვებული ყოფილიყო, როდესაც კოდი შეიცავდა rjmp-ს ან rcall-ს, რომლის მიზანი ზუსტად 4k ბაიტი იყო.
ვერსია 2.00
არცერთი.
ცნობილი საკითხები
ქვემოთ მოცემულია შეზღუდვები შემდგენელის მუშაობაში. ეს შეიძლება იყოს ზოგადი კოდირების შეზღუდვები, ან
გადახრები მომხმარებლის სახელმძღვანელოში მოცემული ინფორმაციისგან. სათაურში ფრჩხილებში ჩასმული იარლიყ(ებ)ი არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს სასარგებლო, თუ თქვენ გჭირდებათ დაუკავშირდეთ მხარდაჭერას. ის ელემენტები, რომლებსაც არ აქვთ ეტიკეტები, არის შეზღუდვები, რომლებიც აღწერს ოპერაციულ რეჟიმს და რომლებიც, სავარაუდოდ, მუდმივად დარჩება ძალაში.
MPLAB X IDE ინტეგრაცია
MPLAB IDE ინტეგრაცია თუ კომპილერი უნდა იყოს გამოყენებული MPLAB IDE-დან, მაშინ კომპილერის დაყენებამდე უნდა დააინსტალიროთ MPLAB IDE.
კოდის გენერაცია
PA მეხსიერების განაწილების წარუმატებლობა (XCS-2881) პროცედურული აბსტრაქციის ოპტიმიზატორების გამოყენებისას, ლინკერმა შეიძლება შეატყობინოს მეხსიერების განაწილების შეცდომებს, როდესაც კოდის ზომა ახლოსაა მოწყობილობაზე არსებული პროგრამის მეხსიერების რაოდენობასთან, მიუხედავად იმისა, რომ პროგრამას უნდა მოერგოს ხელმისაწვდომი სივრცე.
არც ისე ჭკვიანი Smart-IO (XCS-2872) შემდგენელის smart-io ფუნქცია გამოიმუშავებს მოქმედ, მაგრამ არაოპტიმალური კოდს სპრინტის ფუნქციისთვის, თუ coast-data-in-proem ფუნქცია გამორთულია ან თუ მოწყობილობას აქვს მთელი ფლეშ რუკა მონაცემთა მეხსიერებაში.
კიდევ უფრო ნაკლებად ჭკვიანი Smart-IO (XCS-2869) შემდგენელის smart-io ფუნქცია გამოიმუშავებს მოქმედ, მაგრამ არაოპტიმალურ კოდს, როდესაც ორივე -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 იქნება დამუშავებული ლინკერის მიერ შეიძლება განსხვავდებოდეს პროცედურული აბსტრაქციის ოპტიმიზაციის გამოყენების საფუძველზე (-mpa ვარიანტი). ეს გავლენას მოახდენს მხოლოდ კოდზე, რომელიც განსაზღვრავს სუსტ ფუნქციებს მრავალ მოდულში.
დამაკავშირებელი შეცდომა აბსოლუტური (XCS-2777) როდესაც ობიექტი აბსოლუტურია მისამართზე RAM-ის დაწყებისას და ასევე განისაზღვრა არაინიციალიზებული ობიექტები, შეიძლება მოხდეს ლინკერის შეცდომა.
მოკლე გაღვიძების ID (XCS-2775) ATA5700/2 მოწყობილობებისთვის PHID0/1 რეგისტრები მხოლოდ 16 ბიტიანი სიგანით არის განსაზღვრული, ვიდრე 32 ბიტიანი.
ბმულის ავარია სიმბოლოს გამოძახებისას (XCS-2758) ლინკერი შეიძლება დაზიანდეს, თუ -merlad დრაივერის ვარიანტი გამოყენებული იქნება, როდესაც წყაროს კოდი გამოიძახებს სიმბოლოს, რომელიც განსაზღვრულია -Wl, -defsym ლინკერის ოფციის გამოყენებით.
არასწორი ინიციალიზაცია (XCS-2679) არსებობს შეუსაბამობა, თუ სად არის განთავსებული ზოგიერთი გლობალური/სტატიკური ბაიტის ზომის ობიექტების საწყისი მნიშვნელობები მონაცემთა მეხსიერებაში და სად იქნება ცვლადების წვდომა გაშვების დროს.
არასწორად დაიწყო დაყენებულია ცარიელი (XCS-2652) იმ შემთხვევებში, როდესაც სათაური სტრიქონი კონვერტაციისთვის მითითებული ()-ით შეიცავს, როგორც ჩანს, მცურავი წერტილის რიცხვს ექსპონენციალურ ფორმატში და არის მოულოდნელი სიმბოლო e სიმბოლოს შემდეგ, მაშინ ცარიელი მისამართი, თუ მითითებულია, მიუთითებს სიმბოლოზე შემდეგ ე და არა თავად ე. მაგample: განაცხადა (“ჰოოი”, ცარიელი); გამოიწვევს ცარიელი მითითებით x სიმბოლოს.
ცუდი არაპირდაპირი ფუნქციის ზარები (XCS-2628) ზოგიერთ შემთხვევაში, ფუნქციის გამოძახება, რომელიც შესრულებულია სტრუქტურის ნაწილად შენახული ფუნქციის მაჩვენებლის საშუალებით, შეიძლება ვერ მოხდეს.
strtof აბრუნებს ნულს თექვსმეტობითი ათწილადებისთვის (XCS-2626) ბიბლიოთეკის ფუნქციები strtof () et al და scanf () et al, ყოველთვის გარდაქმნის თექვსმეტობითი მცურავი წერტილის რიცხვს, რომელიც არ განსაზღვრავს მაჩვენებელს
ნული. მაგample: სტატორი ("ბუ", &ცარიელი); დააბრუნებს მნიშვნელობას 0 და არა 1.
დატის მრჩეველის არაზუსტი შეტყობინებები (XCS-2542, XCS-2541) ზოგიერთ შემთხვევაში, სტეკის მრჩეველის გაფრთხილება გამოყენებული რეკურსიის ან განუსაზღვრელი სტეკის შესახებ (შესაძლოა alloca()-ის გამოყენებით) არ არის გამოშვებული.
დუბლიკატი შეფერხების კოდის შეფერხება (XCS-2421) სადაც ერთზე მეტ შეფერხების ფუნქციას აქვს ერთი და იგივე სხეული, შემდგენელს შეიძლება ჰქონდეს გამომავალი ერთი შეწყვეტის ფუნქციის გამოძახება მეორეზე. ეს გამოიწვევს ყველა ზარის დაბინძურებული რეგისტრის ზედმეტ შენახვას და შეფერხებები ჩაირთვება მანამ, სანამ მიმდინარე შეფერხების დამმუშავებლის ეპილოგი ამოიწურება, რამაც შეიძლება გამოიწვიოს კოდის უკმარისობა.
Const ობიექტები, რომლებიც არ არის პროგრამის მეხსიერებაში (XCS-2408) avrxmega3 და avertins პროექტებისთვის არაიდეალური const ობიექტები მოთავსებულია მონაცემთა მეხსიერებაში, მიუხედავად იმისა, რომ გაფრთხილება ვარაუდობს, რომ ისინი მოთავსებულია პროგრამის მეხსიერებაში. ეს არ იმოქმედებს მოწყობილობებზე, რომლებსაც არ აქვთ პროგრამული მეხსიერება შედგენილი მონაცემთა მეხსიერების სივრცეში და არც ინიციალიზებულ ობიექტზე.
არასწორი გამომავალი DFP არასწორი ბილიკით (XCS-2376) თუ შემდგენელი გამოძახებულია არასწორი DFP ბილიკით და 'spec' file არსებობს არჩეული მოწყობილობისთვის, შემდგენელი არ აცნობებს დაკარგული მოწყობილობის ოჯახის პაკეტს და ამის ნაცვლად ირჩევს "სპეციფიკაციას" file, რამაც შეიძლება გამოიწვიოს არასწორი გამომავალი. "სპეციფიკაცია" files შეიძლება არ იყოს განახლებული განაწილებულ DFP-ებთან და განკუთვნილი იყო მხოლოდ შიდა შემდგენელის ტესტირებისთვის გამოსაყენებლად.
მეხსიერების გადახურვა არ არის აღმოჩენილი (XCS-1966) შემდგენელი არ აღმოაჩენს ობიექტების მეხსიერების გადაფარვას, რომლებიც აბსოლუტურია მისამართზე (()-ის მეშვეობით) და სხვა ობიექტების გამოყენებით სექციის () სპეციფიკატორის გამოყენებით და რომლებიც დაკავშირებულია იმავე მისამართთან.
ბიბლიოთეკის ფუნქციების და _meme (XCS-1763) წარუმატებლობა ლიმბური float-ის ფუნქციები არგუმენტით _memo მისამართის სივრცეში შეიძლება ვერ მოხდეს. გაითვალისწინეთ, რომ ბიბლიოთეკის რუტინები გამოძახებულია ზოგიერთი C ოპერატორისგან, მაგალითად, მაგალითადample, შემდეგი კოდი მოქმედებს: return regFloatVar > memxFloatVar;
შეზღუდული ლიმბური განხორციელება (AVRTC-731) ATTiny4/5/9/10/20/40 პროდუქტებისთვის, სტანდარტული C / მათემატიკის ბიბლიოთეკის განხორციელება ლიმბურში ძალიან შეზღუდულია ან არ არსებობს.
პროგრამის მეხსიერების შეზღუდვები (AVRTC-732) პროგრამის მეხსიერების სურათები 128 კბ-ზე მეტი მხარდაჭერილია ინსტრუმენტთა ჯაჭვის მიერ; თუმცა, ცნობილია ლინკერის შეწყვეტის შემთხვევები რელაქსაციის გარეშე და გამოსადეგი შეცდომის შეტყობინებების გარეშე, ვიდრე საჭირო ფუნქციის ნაკრებების გენერირება, როდესაც გამოიყენება -relax ვარიანტი.
სახელის სივრცის შეზღუდვები (AVRTC-733) დასახელებული მისამართების სივრცეები მხარდაჭერილია ინსტრუმენტთა ჯაჭვის მიერ, ექვემდებარება მომხმარებლის სახელმძღვანელოს განყოფილებაში მითითებულ შეზღუდვებს სპეციალური ტიპის კვალიფიკატორები.
დროის ზონები The ბიბლიოთეკის ფუნქციები ითვალისწინებს GMT-ს და არ უჭერს მხარს ლოკალურ სასაათო სარტყლებს, ამიტომ ადგილობრივი დრო () დაბრუნდება იმავე დროს, როგორც gummite (), მაგ.ampლე.
მომხმარებელთა მხარდაჭერა
file:///აპლიკაციები/microehip/xc8/v 2 .40/docs/Read me_X C 8_ VR-სთვის. htm
დოკუმენტები / რესურსები
![]() |
MICROCHIP MPLAB XC8 C შემდგენელი პროგრამული უზრუნველყოფა [pdf] მფლობელის სახელმძღვანელო MPLAB XC8 C, MPLAB XC8 C შემდგენელი პროგრამული უზრუნველყოფა, შემდგენელი პროგრამული უზრუნველყოფა, პროგრამული უზრუნველყოფა |