მიკროჩიპი-ლოგო

MICROCHIP XC8 C შემდგენელი ვერსია 2.45 გამოშვების შენიშვნები AVR MCU-სთვის

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

პროდუქტის ინფორმაცია

MPLAB XC8 C შემდგენელი არის პროგრამული უზრუნველყოფის ინსტრუმენტი, რომელიც გამოიყენება მიკროჩიპური AVR მოწყობილობების დასამიზნებლად. იგი შექმნილია C კოდის შედგენისა და შესრულებადი files ამ მოწყობილობებისთვის. შემდგენლის ვერსია, რომელიც მოხსენიებულია ამ მომხმარებლის სახელმძღვანელოში, არის 2.45, ოფიციალური აშენების თარიღი 18 წლის 2023 აგვისტო. წინა ვერსია იყო 2.41, აშენდა 8 წლის 2023 თებერვალს. შემდგენელს მოყვება ფუნქციონალური უსაფრთხოების სახელმძღვანელო, რომელიც გვაწვდის დამატებით ინფორმაციას. და სახელმძღვანელო მითითებები MPLAB XC შემდგენელების გამოყენებისას ფუნქციური უსაფრთხოების აპლიკაციებით. ეს სახელმძღვანელო შედის დოკუმენტაციის პაკეტში ფუნქციონალური უსაფრთხოების ლიცენზიის შეძენისას. MPLAB XC8 C შემდგენელი მხარს უჭერს ყველა ხელმისაწვდომ 8-ბიტიან AVR MCU მოწყობილობას გამოშვების დროს. შეგიძლიათ მიმართოთ avr_chipinfo.html file შემდგენელის დოკუმენტების დირექტორიაში ყველა მხარდაჭერილი მოწყობილობის სიისა და მათი კონფიგურაციის ბიტის პარამეტრებისთვის. ხელმისაწვდომია MPLAB XC8 შემდგენელის სხვადასხვა გამოცემა. ლიცენზირებული (PRO) გამოცემა უზრუნველყოფს ოპტიმიზაციის უფრო მაღალ დონეს უფასო გამოცემასთან შედარებით. კომპილერის, როგორც ლიცენზირებული პროდუქტის გასააქტიურებლად, თქვენ უნდა შეიძინოთ აქტივაციის გასაღები. თუმცა, არალიცენზირებული ვერსია შეიძლება გამოყენებულ იქნას განუსაზღვრელი ვადით ლიცენზიის გარეშე. ფუნქციონალური უსაფრთხოების აპლიკაციებისთვის ხელმისაწვდომია MPLAB XC8 Functional Safety შემდგენელი. გასააქტიურებლად საჭიროა მიკროჩიპისგან შეძენილი ფუნქციური უსაფრთხოების ლიცენზია. გააქტიურების შემდეგ, ოპტიმიზაციის ყველა დონე და შემდგენელი ფუნქციები შეიძლება გამოყენებულ იქნას. MPLAB XC ფუნქციური უსაფრთხოების შემდგენელი ასევე მხარს უჭერს ქსელის სერვერის ლიცენზიას. დეტალური ინფორმაცია ინსტალაციის, აქტივაციის, ლიცენზიის ტიპებისა და მიგრაციის საკითხების შესახებ შეგიძლიათ იხილოთ MPLAB XC C C Compilers (DS50002059) ინსტალაცია და ლიცენზირება დოკუმენტში.

პროდუქტის გამოყენების ინსტრუქცია

  1. MPLAB XC8 C Compiler-ის პროგრამული უზრუნველყოფის გაშვებამდე, წაიკითხეთ მომხმარებლის სახელმძღვანელო მნიშვნელოვანი ინფორმაციისთვის და ინსტრუქციებისთვის, რომლებიც სპეციფიკურია მიკროჩიპის AVR მოწყობილობების დამიზნებისთვის.
  2. თუ თქვენ იყენებთ კომპილერს 8-ბიტიანი PIC მოწყობილობებისთვის, იხილეთ MPLAB XC8 C შემდგენელის გამოშვების შენიშვნები PIC დოკუმენტისთვის.
  3. დარწმუნდით, რომ თქვენი ოპერაციული სისტემა აკმაყოფილებს სისტემურ მოთხოვნებს შემდგენელის გასაშვებად. ბინარები macOS-ისთვის კოდირებულია და დამოწმებულია ნოტარიულად. MPLAB XC ქსელის სალიცენზიო სერვერი ხელმისაწვდომია Microsoft Windows 10 და ზემოთ, Ubuntu 18.04 და ზემოთ და macOS 10.15 და ზემოთ. გაითვალისწინეთ, რომ MPLAB XC ქსელის სალიცენზიო სერვერი არ არის გამოცდილი ამ ოპერაციულ სისტემებზე.
  4. MPLAB XC ქსელის სალიცენზიო სერვერის გაშვება შესაძლებელია მხარდაჭერილი OS-ის ვირტუალურ მანქანებზე, ვირტუალური მანქანის ლიცენზიის გამოყენებით ქსელის ლიცენზიებისთვის (SW006021-VM). MPLAB XC ქსელის სერვერის ყველა 32-ბიტიანი ვერსია შეწყვეტილია 3.00 ვერსიიდან დაწყებული.
  5. MPLAB XC8 C კომპილერის, როგორც ლიცენზირებული (PRO) პროდუქტის გასააქტიურებლად, შეიძინეთ აქტივაციის გასაღები. ეს უზრუნველყოფს ოპტიმიზაციის უფრო მაღალ დონეს უფასო ვერსიასთან შედარებით. თუმცა, არალიცენზირებული შემდგენელი შეიძლება მუშაობდეს განუსაზღვრელი ვადით ლიცენზიის გარეშე.
  6. თუ იყენებთ MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელს ფუნქციონალური უსაფრთხოების აპლიკაციებისთვის, ის უნდა იყოს გააქტიურებული Microchip-დან შეძენილი ფუნქციური უსაფრთხოების ლიცენზიით. შემდგენელი არ იმუშავებს ამ ლიცენზიის გარეშე. გააქტიურების შემდეგ, შეგიძლიათ აირჩიოთ ნებისმიერი ოპტიმიზაციის დონე და გამოიყენოთ კომპილერის ყველა ფუნქცია. ქსელის სერვერის ლიცენზია მხარდაჭერილია MPLAB XC ფუნქციური უსაფრთხოების შემდგენელის ამ გამოშვებით.
  7. MPLAB XC8 C შემდგენელის ინსტალაციის, აქტივაციისა და ლიცენზირების შესახებ დეტალური ინსტრუქციებისთვის იხილეთ MPLAB XC C კომპილერის ინსტალაცია და ლიცენზირება (DS50002059) დოკუმენტი.
  8. თუ თქვენ მართავთ შემდგენელს შეფასების ლიცენზიის ქვეშ, თქვენ მიიღებთ გაფრთხილებას შედგენისას, როდესაც იმყოფებით თქვენი შეფასების პერიოდის დასრულებიდან 14 დღის განმავლობაში. იგივე გაფრთხილება გაიცემა, თუ HPA გამოწერის დასრულებიდან 14 დღის განმავლობაში ხართ.

დასრულდაview

შესავალი
Microchip MPLAB® XC8 C კომპილერის ეს გამოშვება შეიცავს რამდენიმე ახალ ფუნქციას, შეცდომების გამოსწორებას და ახალი მოწყობილობების მხარდაჭერას.

აშენების თარიღი
ამ შემდგენლის ვერსიის ოფიციალური აშენების თარიღია 18 წლის 2023 აგვისტო.

Წინა ვერსია
წინა MPLAB XC8 C შემდგენელი ვერსია იყო 2.41, აშენდა 8 წლის 2023 თებერვალს.

ფუნქციური უსაფრთხოების სახელმძღვანელო
ფუნქციური უსაფრთხოების სახელმძღვანელო 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® 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 ქსელის სალიცენზიო სერვერი არ არის გამოცდილი ამ ოპერაციულ სისტემებზე. MPLAB XC ქსელის სალიცენზიო სერვერის გაშვება შესაძლებელია მხარდაჭერილი OS-ის ვირტუალურ მანქანებზე, ვირტუალური მანქანის ლიცენზიის გამოყენებით ქსელის ლიცენზიებისთვის (SW006021-VM). MPLAB XC ქსელის სერვერის ყველა 32-ბიტიანი ვერსია შეწყვეტილია 3.00 ვერსიიდან დაწყებული.

მოწყობილობები მხარდაჭერილია
ეს კომპილერი მხარს უჭერს ყველა ხელმისაწვდომ 8-ბიტიან AVR MCU მოწყობილობას გამოშვების დროს. იხილეთ avr_chipinfo.html (შემდგენელის დოკუმენტების დირექტორიაში) ყველა მხარდაჭერილი მოწყობილობის სიისთვის. ამ ფაილებში ასევე ჩამოთვლილია თითოეული მოწყობილობის კონფიგურაციის ბიტის პარამეტრები.

გამოცემები და ლიცენზიის განახლებები
MPLAB XC8 შემდგენელი შეიძლება გააქტიურდეს როგორც ლიცენზირებული (PRO) ან არალიცენზირებული (უფასო) პროდუქტი. თქვენ უნდა შეიძინოთ აქტივაციის გასაღები თქვენი კომპილერის ლიცენზირებისთვის. ლიცენზია იძლევა ოპტიმიზაციის უფრო მაღალ დონეს უფასო პროდუქტთან შედარებით. არალიცენზირებული შემდგენელი შეიძლება მუშაობდეს განუსაზღვრელი ვადით ლიცენზიის გარეშე. MPLAB XC8 ფუნქციური უსაფრთხოების შემდგენელი უნდა გააქტიურდეს მიკროჩიპიდან შეძენილი ფუნქციური უსაფრთხოების ლიცენზიით. შემდგენელი არ იმუშავებს ამ ლიცენზიის გარეშე. გააქტიურების შემდეგ, შეგიძლიათ აირჩიოთ ნებისმიერი ოპტიმიზაციის დონე და გამოიყენოთ კომპილერის ყველა ფუნქცია. MPLAB XC ფუნქციური უსაფრთხოების შემდგენელის ეს გამოშვება მხარს უჭერს ქსელის სერვერის ლიცენზიას. იხილეთ MPLAB XC C შემდგენელების ინსტალაცია და ლიცენზირება (DS50002059) დოკუმენტი ლიცენზიის ტიპებისა და ლიცენზიით შემდგენლის ინსტალაციის შესახებ ინფორმაციისთვის.

ინსტალაცია და აქტივაციის
აგრეთვე იხილეთ მიგრაციის საკითხები და შეზღუდვები სექციები მნიშვნელოვანი ინფორმაციისთვის უახლესი ლიცენზიის მენეჯერის შესახებ, რომელიც შედის ამ შემდგენელთან. თუ იყენებთ MPLAB IDE-ს, დარწმუნდით, რომ დააინსტალირეთ MPLAB X IDE-ის უახლესი ვერსია 5.0 ან უფრო ახალი ამ ხელსაწყოს ინსტალაციამდე. გამოდით IDE-დან კომპილერის დაყენებამდე. გაუშვით .run (Linux) ან .app (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-ის რომელიმე ოპერაციული სისტემის ქვეშ შემდგენლის დაყენებისას სირთულეები გაქვთ, სცადეთ შემდეგი წინადადებები.

  • გაუშვით ინსტალაცია ადმინისტრატორის სახით.
  • დააყენეთ საინსტალაციო აპლიკაციის ნებართვები „სრული კონტროლი“. (დააწკაპუნეთ მაუსის მარჯვენა ღილაკით ფაილზე, აირჩიეთ თვისებები, უსაფრთხოების ჩანართი, აირჩიეთ მომხმარებელი, შეცვალეთ.)
  • დააყენეთ დროებითი საქაღალდის ნებართვები "სრული კონტროლი".

Temp საქაღალდის ადგილმდებარეობის დასადგენად, Run ბრძანებაში ჩაწერეთ %temp% (Windows logo key + R). ეს გახსნის ფაილების მკვლევარის დიალოგს, რომელიც აჩვენებს ამ დირექტორიას და საშუალებას მოგცემთ განსაზღვროთ ამ საქაღალდის გზა.

შემდგენელი დოკუმენტაცია
შემდგენელის მომხმარებლის სახელმძღვანელო შეიძლება გაიხსნას HTML გვერდიდან, რომელიც იხსნება თქვენს ბრაუზერში MPLAB X IDE დაფაზე დახმარების ლურჯი ღილაკის დაწკაპუნებისას, როგორც ეს ნაჩვენებია ეკრანის სურათზე.MICROCHIP-XC8-C-Compiler-Version-2-45-Release-Notes-for-AVR-MCU-1

თუ თქვენ აშენებთ 8-ბიტიან AVR სამიზნეებს, MPLAB® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელო AVR® MCU-სთვის შეიცავს ინფორმაციას შემდგენელის ვარიანტებისა და ფუნქციების შესახებ, რომლებიც გამოიყენება ამ არქიტექტურისთვის.

მომხმარებელთა მხარდაჭერა
თქვენ შეგიძლიათ დაუსვათ შეკითხვები ამ პროდუქტის სხვა მომხმარებლებს XC8 ფორუმზე. Microchip მიესალმება შეცდომების შესახებ შეტყობინებებს, წინადადებებს ან კომენტარებს ამ შემდგენლის ვერსიასთან დაკავშირებით. გთხოვთ, მიმართოთ შეცდომების შესახებ შეტყობინებებს ან ფუნქციების მოთხოვნას მხარდაჭერის სისტემის მეშვეობით.

დოკუმენტაციის განახლებები

MPLAB XC8 დოკუმენტაციის ონლაინ და განახლებული ვერსიებისთვის, გთხოვთ, ეწვიოთ Microchip-ის ონლაინ ტექნიკურ დოკუმენტაციას webსაიტი.
ახალი ან განახლებული AVR დოკუმენტაცია ამ გამოშვებაში:

არცერთი

  • AVR® GNU Toolchain-ში MPLAB® XC8 მიგრაციის გზამკვლევი აღწერს ცვლილებებს წყაროს კოდში და build-ის ვარიანტებში, რომლებიც შეიძლება საჭირო გახდეს, თუ გადაწყვეტთ C-ზე დაფუძნებული პროექტის მიგრაციას AVR 8-ბიტიანი GNU Toolchain-დან მიკროჩიპის MPLAB XC8 C შემდგენელში.
  • მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო გზამკვლევი აღწერს მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის მიერ განსაზღვრული ფუნქციების ქცევას და ინტერფეისს, ასევე ბიბლიოთეკის ტიპებისა და მაკროების დანიშნულ გამოყენებას. ამ ინფორმაციის ნაწილი ადრე იყო MPLAB® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელოში AVR® MCU. მოწყობილობის სპეციფიკური ბიბლიოთეკის ინფორმაცია კვლავ შეიცავს ამ შემდგენლის სახელმძღვანელოში.
  • თუ ახლახან იწყებთ 8-ბიტიანი მოწყობილობებით და MPLAB XC8 C შემდგენელით, MPLAB® XC8 მომხმარებლის
  • გზამკვლევი ჩაშენებული ინჟინრებისთვის – AVR® MCU (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) გაუმჯობესდა მცურავი წერტილიანი ბიბლიოთეკის ფუნქციები, მათ შორის sinf() pow(), sqrt(), expf(), log1fp() და nextafterf() , რომელიც ხედავს კოდის ზომის შემცირებას ამ რუტინებისთვის. ახალი მოწყობილობის მხარდაჭერის მხარდაჭერა ახლა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: AVR16EA28, AVR16EA32, AVR16EA48, AVR32EA28, AVR32EA32, AVR32EA48, AVR16EB14, AVR16EB20, AVR16, და 28EB16.

ვერსია 2.41

  • Bootrow მხარდაჭერა (XC8-3053) შემდგენელი განათავსებს ნებისმიერი განყოფილების შიგთავსს .bootrow პრეფიქსით მისამართზე 0x860000 HEX ფაილში. ეს სექციები გამოიყენება BOOTROW მეხსიერებისთვის, რომელიც განკუთვნილია გასაღებებისა და სხვა უსაფრთხო ინფორმაციის შესანახად, რომელიც ხელმისაწვდომი უნდა იყოს მხოლოდ ჩამტვირთველისთვის.
  • გადაჭარბებული დაბრუნების აღმოფხვრა (XC8-3048) შემდგენელი ახლა აღმოფხვრის ზედმეტ დაბრუნების ინსტრუქციებს ფუნქციებში კუდის ნახტომით, როდესაც გამოიყენება მორგებული ლინკერის სკრიპტები. ეს არის ადრე შესრულებული ოპტიმიზაციის მსგავსი, მაგრამ ახლა ის შესრულებულია ყველა ობოლი სექციაზე, მაშინაც კი, თუ გამოყენებულია მორგებული ლინკერის სკრიპტი და საუკეთესო მორგებული განაწილების სქემა არ არის თამაშში.
  • დროის ტიპის შეცვლა (XC8-2982, 2932) C99 ბიბლიოთეკის სტანდარტული ტიპი, time_t შეიცვალა long long-დან ხელმოუწერელ გრძელ ტიპზე, რაც იძლევა კოდის ზომის გაუმჯობესებას ზოგიერთ დროსთან დაკავშირებულ ფუნქციებში, როგორიცაა mktime().
  • ახალი nop (XC8-2946, 2945) მაკრო NOP() დაემატა . ეს მაკრო გამომავალში ათავსებს nop no-operation ინსტრუქციას.
  • განახლება XCLM-ზე (XC8-2944) შემდგენლთან ერთად გამოყენებული ლიცენზიის მენეჯერი განახლებულია და ახლა უფრო რეაგირებს შემდგენელის ლიცენზიის დეტალების შემოწმებისას.
  • Trampოლინირებული ზარები (XC8-2760) შემდგენელს ახლა შეუძლია შეცვალოს გრძელი ფორმის ზარის ინსტრუქციები უფრო მოკლე ფარდობითი ზარებით, როდესაც ინსტრუქციების ფარდობითი ფორმები ჩვეულებრივ იქნება მათი დანიშნულების არეალის მიღმა. ამ სიტუაციაში, შემდგენელი შეეცდება rcall ინსტრუქციებით ჩაანაცვლოს jmp გამოძახების ინსტრუქცია, რომელიც იქნება 'trampoline' შესრულება საჭირო მისამართზე, მაგampლე:

ვერსია 2.40

  • ახალი მოწყობილობის მხარდაჭერა ახლა ხელმისაწვდომია შემდეგ AVR ნაწილებზე: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DAV28, AVR64D32, AVR64, AVR48, AVRXNUMX, AVRXNUMX, AVRXNUMXDDXNUMX AVRXNUMXEAXNUMX.
  • გაუმჯობესებული პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის (PA) ოპტიმიზაციის ინსტრუმენტი გაუმჯობესდა ისე, რომ კოდი, რომელიც შეიცავს ფუნქციის გამოძახების ინსტრუქციას (ზარი/ზარი) შეიძლება გამოიკვეთოს. ეს მოხდება მხოლოდ იმ შემთხვევაში, თუ სტეკი არ გამოიყენება არგუმენტების გადასაცემად და ფუნქციიდან დაბრუნებული მნიშვნელობის მისაღებად. სტეკი გამოიყენება ცვლადი არგუმენტების სიით ფუნქციის გამოძახებისას ან ფუნქციის გამოძახებისას, რომელიც უფრო მეტ არგუმენტს იღებს, ვიდრე ამ მიზნისთვის განკუთვნილი რეგისტრებია. ამ ფუნქციის გამორთვა შესაძლებელია – mno-pa-outline-calls ოფციის გამოყენებით, ან პროცედურული აბსტრაქცია შეიძლება მთლიანად გამორთოთ ობიექტის ფაილის ან ფუნქციისთვის -mno-pa-on--ის გამოყენებით.file -mno-pa-on-ფუნქცია, შესაბამისად, ან nopa ატრიბუტის (__nopa specier) შერჩევით ფუნქციების გამოყენებით.
  • კოდის დაფარვის მაკრო შემდგენელი ახლა განსაზღვრავს მაკრო __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-progmem ოფცია შეიძლება გამოყენებულ იქნას იმისთვის, რომ ლინკერმა მოათავსოს ყველა კვალიფიცირებული მონაცემი ერთ 32k სექციაში და ავტომატურად მოახდინოს შესაბამისი SFR რეგისტრის ინიციალიზაცია, რათა უზრუნველყოს, რომ ეს მონაცემები აისახება მონაცემთა მეხსიერების სივრცეში. , სადაც უფრო ეფექტური იქნება წვდომა.
  • მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკები MPLAB XC-ის ყველა შემდგენელი იზიარებს მიკროჩიპის ერთიან სტანდარტულ ბიბლიოთეკას, რომელიც ახლა ხელმისაწვდომია MPLAB XC8-ის ამ გამოშვებით. MPLAB® XC8 C შემდგენელის მომხმარებლის სახელმძღვანელო AVR® MCU-სთვის აღარ შეიცავს ამ სტანდარტული ფუნქციების დოკუმენტაციას. ეს ინფორმაცია ახლა შეგიძლიათ იხილოთ მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის საცნობარო სახელმძღვანელოში. გაითვალისწინეთ, რომ ზოგიერთი ფუნქცია, რომელიც ადრე იყო განსაზღვრული avr-libc-ით, აღარ არის ხელმისაწვდომი. (იხილეთ ბიბლიოთეკის ფუნქციონირება.)
  • Smart IO როგორც ახალი ერთიანი ბიბლიოთეკების ნაწილი, IO ფუნქციები printf და scanf ოჯახებში ახლა უკვე მორგებული გენერირებულია თითოეულ build-ზე, იმის მიხედვით, თუ როგორ გამოიყენება ეს ფუნქციები პროგრამაში. ამან შეიძლება მნიშვნელოვნად შეამციროს პროგრამის მიერ გამოყენებული რესურსები.
  • Smart IO დამხმარე ვარიანტი ჭკვიანი IO ფუნქციების (როგორიცაა printf() ან scanf() ზარების ანალიზის დროს შემდგენელი ყოველთვის ვერ განსაზღვრავს ფორმატის სტრიქონიდან ან არგუმენტებიდან გამოიტანს ზარისთვის საჭირო კონვერტაციის სპეციფიკატორებს. მანამდე, შემდგენელი ყოველთვის აკეთებდა არავითარი ვარაუდი და დარწმუნდით, რომ სრულად ფუნქციონალური IO ფუნქციები მიბმული იყო პროგრამის საბოლოო სურათში. ახალი -msmart-io-format=fmt ვარიანტი დაემატა, რათა შემდგენელმა შეძლოს მომხმარებლის მიერ ინფორმირებული კონვერტაციის სპეციფიკაციების შესახებ, რომლებიც გამოიყენება ჭკვიანი IO-ს მიერ. ფუნქციები, რომელთა გამოყენება ორაზროვანია, რაც ხელს უშლის ზედმეტად ხანგრძლივი IO რუტინების დაკავშირებას (დამატებითი ინფორმაციისთვის იხილეთ smart-io-format Option.)
  • მორგებული სექციების განთავსება მანამდე, -Wl,–section-start ოფცია განათავსებდა მითითებულ განყოფილებას მოთხოვნილ მისამართზე მხოლოდ მაშინ, როდესაც ლინკერის სკრიპტი განსაზღვრავდა გამომავალ განყოფილებას იმავე სახელით. როდესაც ეს ასე არ იყო, განყოფილება განთავსდა ლინკერის მიერ არჩეულ მისამართზე და ეს ვარიანტი არსებითად იგნორირებული იყო. ახლა ეს პარამეტრი იქნება დაცული ყველა მორგებული განყოფილებისთვის, მაშინაც კი, თუ დამაკავშირებელი სკრიპტი არ განსაზღვრავს განყოფილებას. თუმცა, გაითვალისწინეთ, რომ სტანდარტული სექციებისთვის, როგორიცაა .text, .bss ან .data, საუკეთესო fit ალოკატორს მაინც ექნება სრული კონტროლი მათ განთავსებაზე და ოფციას არანაირი ეფექტი არ ექნება. გამოიყენეთ -Wl,-Tsection=addr ვარიანტი, როგორც ეს აღწერილია მომხმარებლის სახელმძღვანელოში.

ვერსია 2.32

  • Stack Guidance ხელმისაწვდომია PRO შემდგენელის ლიცენზიით, შემდგენელის დატის სახელმძღვანელოს ფუნქცია შეიძლება გამოყენებულ იქნას პროგრამის მიერ გამოყენებული ნებისმიერი სტეკის მაქსიმალური სიღრმის შესაფასებლად. იგი აყალიბებს და აანალიზებს პროგრამის გამოძახების გრაფიკს, განსაზღვრავს თითოეული ფუნქციის დასტას გამოყენებას და აწარმოებს ანგარიშს, საიდანაც პროგრამის მიერ გამოყენებული სტეკების სიღრმის დასკვნა შეიძლება. ეს ფუნქცია ჩართულია -mchp-stack-usage ბრძანების ხაზის პარამეტრის მეშვეობით. სტეკის გამოყენების შეჯამება იბეჭდება შესრულების შემდეგ. დატის დეტალური ანგარიში ხელმისაწვდომია რუქის ფაილში, რომლის მოთხოვნაც შესაძლებელია ჩვეულებრივი გზით.
  • მოწყობილობის ახალი მხარდაჭერა ხელმისაწვდომია შემდეგი AVR ნაწილებისთვის: Attiny427, Attiny424, Attiny426, Attiny827, Attiny824, Attiny826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32, AVR32DB48, AVRXNUMXDBXNUMX
  • ამოღებული მოწყობილობის მხარდაჭერა მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგი AVR ნაწილებისთვის: AVR16DA28, AVR16DA32 და AVR16DA48.

ვერსია 2.31
არცერთი.

ვერსია 2.30

  • ახალი ვარიანტი მონაცემთა ინიციალიზაციის თავიდან ასაცილებლად ახალი -mno-data-init დრაივერის ვარიანტი ხელს უშლის მონაცემთა ინიციალიზაციას და bss სექციების გასუფთავებას. ის მუშაობს ასამბლეის ფაილებში do_clear_bss სიმბოლოების გამოსავლის ჩახშობით, რაც თავის მხრივ ხელს შეუშლის ამ რუტინების ჩართვას ლინკერის მიერ.
  • გაძლიერებული ოპტიმიზაცია განხორციელდა ოპტიმიზაციის მთელი რიგი გაუმჯობესება, მათ შორის ზედმეტი დაბრუნების ინსტრუქციების წაშლა, ზოგიერთი ნახტომის ამოღება skip-if-bit-is ინსტრუქციის შემდეგ და გაუმჯობესებული პროცედურული აბსტრაქცია და ამ პროცესის გამეორების შესაძლებლობა.
    ამ ოპტიმიზაციის ზოგიერთი ოპტიმიზაციის გასაკონტროლებლად ახლა უკვე ხელმისაწვდომია დამატებითი ოფციები, კონკრეტულად -fsection- anchors, რაც საშუალებას აძლევს სტატიკური ობიექტების წვდომას შესრულდეს ერთი სიმბოლოს მიმართ; -mpa- iterations=n, რომელიც საშუალებას იძლევა შეცვალოს პროცედურული აბსტრაქციის გამეორებების რაოდენობა ნაგულისხმევი 2-დან; და, -mpa-callcost-shortcall, რომელიც ახორციელებს უფრო აგრესიულ პროცედურულ აბსტრაქციას, იმ იმედით, რომ ლინკერს შეუძლია შეამსუბუქოს გრძელი ზარები. ამ ბოლო ვარიანტს შეუძლია გაზარდოს კოდის ზომა, თუ ძირითადი ვარაუდები არ განხორციელდება.
  • ახალი მოწყობილობის მხარდაჭერა ხელმისაწვდომია შემდეგ AVR ნაწილებზე: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64, AVR64DA128, AVR28DA128 32, AVR128DB48 და AVR128DB64.
  • ამოღებული მოწყობილობის მხარდაჭერის მხარდაჭერა აღარ არის ხელმისაწვდომი შემდეგი AVR ნაწილებისთვის: ATA5272, ATA5790, ATA5790N, ATA5791, ATA5795, ATA6285, ATA6286, ATA6612C, ATA6613C, ATA6614Q, ATA6616, 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 მდებარეობს შემდგენელის განაწილების დოკუმენტების დირექტორიაში. ეს ფაილი ჩამოთვლის კომპილერის მიერ მხარდაჭერილ ყველა მოწყობილობას. დააწკაპუნეთ მოწყობილობის სახელზე და ის გაიხსნება გვერდი, სადაც ნაჩვენებია ამ მოწყობილობისთვის ყველა დასაშვები კონფიგურაციის ბიტის პარამეტრი/მნიშვნელობის წყვილი, მაგ.amples.
  • პროცედურული აბსტრაქცია პროცედურული აბსტრაქციის ოპტიმიზაცია, რომელიც ანაცვლებს ასამბლეის კოდის ჩვეულებრივ ბლოკებს ამ ბლოკის ამოღებულ ასლზე ზარებით, დაემატა კომპილერს. ისინი შესრულებულია ცალკეული აპლიკაციით, რომელსაც ავტომატურად გამოიძახებს შემდგენელი მე-2, მე-3 ან ს დონის ოპტიმიზაციის არჩევისას. ეს ოპტიმიზაცია ამცირებს კოდის ზომას, მაგრამ მათ შეუძლიათ შეამცირონ შესრულების სიჩქარე და კოდის გამართვა. პროცედურული აბსტრაქცია შეიძლება გამორთოთ ოპტიმიზაციის მაღალ დონეზე ოფციის -mno-pa გამოყენებით, ან შეიძლება ჩართოთ ოპტიმიზაციის დაბალ დონეზე (თქვენი ლიცენზიის მიხედვით) -mpa გამოყენებით. ის შეიძლება გამორთოთ ობიექტის ფაილისთვის -mno-pa-on-ის გამოყენებითfile=fileსახელი , ან გამორთულია ფუნქციისთვის -mno-pa-on- function=ფუნქციის გამოყენებით. თქვენი წყარო კოდის შიგნით, პროცედურული აბსტრაქცია შეიძლება გამორთოთ ფუნქციისთვის __ატრიბუტის__((nopa)) გამოყენებით ფუნქციის განმარტებით, ან __nopa-ის გამოყენებით, რომელიც გაფართოვდება __ატრიბუტზე__((nopa,noinline)) და ამით ხელს უშლის ფუნქციის ჩასმას. და არის ჩასმული კოდის აბსტრაქცია.
  • ჩაკეტვის ბიტის მხარდაჭერა პრაგმაში #pragma config ახლა შეიძლება გამოყენებულ იქნას AVR დაბლოკვის ბიტების და ასევე სხვა კონფიგურაციის ბიტების დასაზუსტებლად. შეამოწმეთ avr_chipinfo.html ფაილი (ზემოთ ნახსენები) პარამეტრის/მნიშვნელობის წყვილებისთვის ამ პრაგმაში გამოსაყენებლად.
  • ახალი მოწყობილობის მხარდაჭერა ხელმისაწვდომია შემდეგი ნაწილებისთვის: 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 ბიბლიოთეკის ფაილის შესაქმნელად ან მანიპულირებისთვის და, შესაბამისად, არის ბიბლიოთეკარის გამოძახების რეკომენდებული გზა. თუ საჭიროა მემკვიდრეობითი პროექტებისთვის, წინა ბიბლიოთეკარის გამოძახება შეიძლება უშუალოდ ძველი სტილის ვარიანტების გამოყენებით, რომლებიც მიღებული იყო კომპილერის ადრინდელ ვერსიებში.

მიგრაციის საკითხები

ქვემოთ მოცემულია ფუნქციები, რომლებსაც ახლა სხვაგვარად ამუშავებს შემდგენელი. ამ ცვლილებებმა შეიძლება მოითხოვოს თქვენი წყაროს კოდის შეცვლა, თუ კოდი გადაიტანეთ კომპილერის ამ ვერსიაზე. ქვესათაურებში ვერსიის ნომერი მიუთითებს შემდგენელის პირველ ვერსიაზე, რომელიც მხარს უჭერს შემდგომ ცვლილებებს.

ვერსია 2.45
არცერთი.

ვერსია 2.41
ამოღებულია არაზუსტი fma ფუნქციები (XC8-2913) C99 სტანდარტული ბიბლიოთეკა ( ) უსასრულო სიზუსტით არ გამოთვალა გამრავლება-დამატება ერთ დამრგვალებაზე, სამაგიეროდ დააგროვა დამრგვალების შეცდომები ყოველი ოპერაციის დროს. ეს ფუნქციები ამოღებულია მოწოდებული ბიბლიოთეკიდან.

ვერსია 2.40
არცერთი.

ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.

ვერსია 2.36
არცერთი.

ვერსია 2.35

  • სტრიქონის ბაზების მართვა (XC8-2420) XC8-ის სხვა შემდგენელებთან თანმიმდევრულობის უზრუნველსაყოფად, XC36 string-to ფუნქციები, როგორიცაა strtol() და ა.შ., აღარ შეეცდება შეყვანის სტრიქონის გადაქცევას, თუ მითითებული ბაზა XNUMX-ზე დიდია. და ამის ნაცვლად დაყენდება. C სტანდარტი არ აკონკრეტებს ფუნქციების ქცევას, როდესაც ეს საბაზისო მნიშვნელობა აღემატება.
  • სიჩქარის შეუსაბამო ოპტიმიზაცია მე-3 დონის ოპტიმიზაციის (-O3) არჩევისას ჩართული იყო პროცედურული აბსტრაქციის ოპტიმიზაცია. ეს ოპტიმიზაცია ამცირებს კოდის ზომას კოდის სიჩქარის ხარჯზე, ამიტომ არ უნდა შესრულებულიყო. პროექტებმა, რომლებიც იყენებენ ამ ოპტიმიზაციის დონეს, შეიძლება დაინახონ განსხვავებები კოდის ზომასა და შესრულების სიჩქარეში, როდესაც აშენდება ამ გამოშვებით.
  • ბიბლიოთეკის ფუნქციონალობა C ბიბლიოთეკის მრავალი სტანდარტული ფუნქციის კოდი ახლა მომდინარეობს Microchip-ის ერთიანი სტანდარტული ბიბლიოთეკიდან, რომელიც შეიძლება გამოავლინოს განსხვავებული ქცევა ზოგიერთ შემთხვევაში, ვიდრე ყოფილი avr-libc ბიბლიოთეკის მიერ მოწოდებული. მაგampამიტომ, აღარ არის საჭირო lprintf_flt ბიბლიოთეკაში მიბმა (-lprintf_flt ოფცია), რათა ჩართოთ ფორმატირებული IO მხარდაჭერა float-format-ის სპეციფიკატორებისთვის. მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის ჭკვიანი IO ფუნქციები ამ ვარიანტს ზედმეტად აქცევს. გარდა ამისა, _P სუფიქსის რუტინების გამოყენება სტრიქონებისა და მეხსიერების ფუნქციებისთვის (მაგ. strcpy_P() და ა.შ.), რომლებიც მოქმედებენ const სტრიქონებზე Flash-ში აღარ არის საჭირო. სტანდარტული C რუტინები (მაგ. strcpy() სწორად იმუშავებს ასეთ მონაცემებთან, როდესაც ჩართულია const-data-in-program-memory ფუნქცია.

ვერსია 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(address) სპეციფიკატორის გამოყენებით, მაგ.ampლე:
    • #შეიცავს
      int foobar __at(0x800100);
      char __at(0x250) getID(int offset) {… }
      ამ სპეციფიკატორის არგუმენტი უნდა იყოს მუდმივი, რომელიც წარმოადგენს მისამართს, რომელზეც განთავსდება პირველი ბაიტი ან ინსტრუქცია. RAM მისამართები მითითებულია 0x800000 ოფსეტურით. ჩართეთ CCI ამ ფუნქციის გამოყენებისთვის.
  • ახალი შეფერხების ფუნქციის სინტაქსი შემდგენელი ახლა იღებს CCI __interrupt(num) სპეციფიკატორს, რათა მიუთითოს, რომ C ფუნქციები არის შეფერხების დამმუშავებლები. სპეციფიკატორი იღებს შეწყვეტის ნომერს, მაგample: #შეიცავს void __interrupt(SPI_STC_vect_num) spi_Isr(void) {…}

დაფიქსირებული საკითხები

ქვემოთ მოცემულია შესწორებები, რომლებიც გაკეთდა შემდგენელში. ამან შეიძლება გამოასწოროს შეცდომები გენერირებულ კოდში ან შეცვალოს შემდგენელის მოქმედება იმით, რაც განკუთვნილი იყო ან მითითებული იყო მომხმარებლის სახელმძღვანელოში. ვერსიის ნომერი ქვესათაურებში მიუთითებს შემდგენელის პირველ ვერსიაზე, რომელიც შეიცავს შესწორებებს შემდგომ საკითხებზე. სათაურში ფრჩხილებში ჩასმული იარლიყ(ებ)ი არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს სასარგებლო, თუ თქვენ გჭირდებათ დაუკავშირდეთ მხარდაჭერას.
გაითვალისწინეთ, რომ მოწყობილობასთან დაკავშირებული ზოგიერთი პრობლემა გამოსწორებულია მოწყობილობასთან დაკავშირებულ Device Family Pack-ში (DFP). იხილეთ MPLAB პაკეტის მენეჯერი DFP-ებში განხორციელებული ცვლილებებისა და უახლესი პაკეტების ჩამოტვირთვის შესახებ ინფორმაციისთვის.

ვერსია 2.45

  • როუმინგის ლიცენზიის წარუმატებლობა (XCLM-235) როუმინგის ლიცენზიები ვერ მუშაობდა სწორად Linux პლატფორმებზე, რომლებიც იყენებენ glibc 2.28-ზე გვიან ვერსიებს.
  • შიდა შეცდომა სტრუქტურების მასივებთან (XC8-3069) როდესაც სტრუქტურის მრავალგანზომილებიანი მასივის წევრები დამუშავდა, მისამართების სივრცის კვალიფიკატორი არ იყო სწორად გავრცელებული მასივში. ამან გამოიწვია მისამართების სივრცის კვალიფიკაციის ინფორმაციის შეუსაბამობა და შემდგენელის შიდა შეცდომა. ეს მდგომარეობა გამოსწორდა.
  • არასწორი ჩაწერა არაინიციალიზებულ ნაკადებზე (ML-353, XC8-3100) თუ სტანდარტული გამომავალი/შეცდომის ნაკადები აშკარად არ იყო დაყენებული FDEV_SETUP_STREAM-ის ან _init_stdout/_init_stderr-ის გამოყენებით, მათზე ჩაწერის მცდელობამ გამოიწვია განუსაზღვრელი ქცევა. ეს ასევე შეეხო stdlib ფუნქციების ჩაწერას, როგორიცაა perror(). ნებისმიერი ჩანაწერი ამ ნაკადებზე, სანამ ისინი ინიციალიზდებოდა, ახლა იგნორირებული იქნება.
  • მხარდაუჭერელი მოდიფიკატორი (XC8-2505) avr-libc ბიბლიოთეკა არ უჭერდა მხარს * მოდიფიკატორს printf-ის სტილის კონვერტაციის სპეციფიკაციებში, მაგ.ample “%.*f”. ეს ახლა მხარდაჭერილია მიკროჩიპის ერთიანი სტანდარტული ბიბლიოთეკის დანერგვით.
  • მრავალჯერადი არაინიციალიზებული გაფრთხილება (XC8-2409) შემდგენელი ავრცელებდა რამდენიმე იდენტურ გამაფრთხილებელ შეტყობინებას, როდესაც ხვდებოდა const მასივს, რომელიც არ იყო ინიციალიზებული. მესიჯი მხოლოდ ერთხელ უნდა ყოფილიყო გაცემული, რაც ახლა ხდება, როცა ეს სიტუაცია ხდება.

ვერსია 2.41

  • Dongle-ის პრობლემები Ventura-ზე (XC8-3088) კომპილატორის ლიცენზირებისთვის გამოყენებული Dongles შესაძლოა არ ყოფილიყო სათანადოდ წაკითხული macOS Ventura ჰოსტებზე, რამაც გამოიწვია ლიცენზირების წარუმატებლობა. XCLM ლიცენზიის მენეჯერის ცვლილებები ამ საკითხს ასწორებს.
  • მეხსიერების განაწილების არასწორი მითითება (XC8-2925) მეხსიერების SIZE_MAX ბაიტის (ან მასთან მიახლოებული მნიშვნელობის) გამოყოფის მცდელობა ბიბლიოთეკის მეხსიერების მართვის სტანდარტული ფუნქციების გამოყენებით (malloc() et al), რომელიც მოთხოვნილია მარტივი დინამიური მეხსიერების განაწილების განხორციელებისას. 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-cong-mapped-progmem ფუნქცია დამოკიდებულია const-data-in-progmem ფუნქციაზე, რომელიც ჩართულია. თუ const-data-in-config-mapped-progmem ფუნქცია ცალსახად ჩართული იყო ოფციის გამოყენებით და const-data-in-progmem ფუნქცია გამორთული იყო, ბმული ნაბიჯი ვერ მოხერხდა, მიუხედავად გამაფრთხილებელი შეტყობინებისა, რომელშიც ნათქვამია, რომ const-data-in -cong-mapped-progmem ფუნქცია ავტომატურად გამორთული იყო, რაც მთლად სწორი არ იყო. const-data-in-config-mapped-progmem ფუნქცია ახლა სრულად გამორთულია ამ სიტუაციაში.
  • DFP იცვლება NVMCTRL-ის (XC8-2848) სწორი წვდომისთვის. AVR64EA მოწყობილობების მიერ გამოყენებული გაშვების კოდი არ ითვალისწინებდა, რომ NVMCTRL რეგისტრი იყო კონფიგურაციის ცვლილების დაცვის (CCP) ქვეშ და არ შეეძლო IO SFR-ის დაყენება გამოყენებულ გვერდზე. const-data-in-cong-mapped-progmem შემდგენელი ფუნქციით. AVR-Ex_DFP 2.2.55 ვერსიაში განხორციელებული ცვლილებები საშუალებას მისცემს გაშვების გაშვების კოდს სწორად ჩაწეროს ამ რეესტრში.
  • DFP ცვლილებები Flash რუკების თავიდან აცილების მიზნით (XC8-2847) დანერგილია AVR128DA28/32/48/64 Silicon Errata-ში (DS80000882) მოხსენებული ფლეშ-მისამართების მოწყობილობის ფუნქციასთან დაკავშირებული პრობლემის გამოსავალი. const-data-in-cong-mapped-progmem compiler ფუნქცია არ იქნება გამოყენებული ნაგულისხმევად დაზარალებული მოწყობილობებისთვის და ეს ცვლილება გამოჩნდება AVR-Dx_DFP 2.2.160 ვერსიაში.
  • Build შეცდომა sinhf ან coshf (XC8-2834) სინhf() ან coshf() ბიბლიოთეკის ფუნქციების გამოყენების მცდელობამ გამოიწვია ბმული შეცდომა, რომელიც აღწერს განუსაზღვრელ მითითებას. გამოტოვებული ფუნქცია, რომელიც მითითებულია, ახლა ჩართულია შემდგენელის განაწილებაში.
  • Build შეცდომები nopa-თან (XC8-2833) nopa ატრიბუტის გამოყენება ფუნქციით, რომელსაც მისი ასამბლერის სახელი მითითებული აქვს __asm__()-ის გამოყენებით, გამოიწვია შეცდომის შეტყობინებები ასამბლერისგან. ეს კომბინაცია შეუძლებელია.
  • ცვლადი ფუნქციის წარუმატებლობა მაჩვენებლის არგუმენტებით (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-in-progmem ფუნქცია და სტრიქონის ლიტერალის მისამართი ცალსახად გადაცემულია მონაცემთა მისამართის სივრცეში (აკლდება const კვალიფიკაცია), მაგ.ample, (uint8_t *) "გამარჯობა სამყარო!" . გაფრთხილება ჩნდება, თუ მისამართი შეიძლება იყოს არასწორი, როდესაც const მონაცემთა მაჩვენებელი პირდაპირ გადაცემულია მონაცემთა მისამართების სივრცეში.
  • არაინიციალიზებული const ობიექტების განთავსება (XC8-2408) Unitialized და const volatile ობიექტების კონსტ.
    არ იყო განთავსებული პროგრამის მეხსიერებაში მოწყობილობებზე, რომლებიც ასახავს მათი პროგრამის მთელ ან ნაწილს მონაცემთა მისამართების სივრცეში. ამ მოწყობილობებისთვის, ასეთი ობიექტები ახლა მოთავსებულია პროგრამის მეხსიერებაში, რაც მათ მუშაობას შეესაბამება სხვა მოწყობილობებთან.

ვერსია 2.39 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.

ვერსია 2.36
შეცდომა დაგვიანებისას (XC8-2774) ნაგულისხმევი თავისუფალი რეჟიმის ოპტიმიზაციაში მცირემა ცვლილებებმა ხელი შეუშალა ოპერანდის გამონათქვამების მუდმივ დაკეცვას დაყოვნების ჩაშენებულ ფუნქციებზე, რის შედეგადაც ისინი განიხილება როგორც არასტაბილურები და იწვევს შეცდომას: __builtin_avr_delay_cycles ელოდება კომპილაციის დროის მთელ რიცხვს. მუდმივი.

ვერსია 2.35

  • თანმიმდევრული განაწილება __at-ის გამოყენებით (XC8-2653) ერთიდაიგივე სახელის სექციაში მრავალი ობიექტის ადგილის მიმდებარედ განაწილება და __at()-ის გამოყენებით არ მუშაობდა სწორად. მაგampლე:
    const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD}; const char arr2[] __attribute__((section(“.mysec”))) = {0xEF, 0xFE}; უნდა განთავსდეს arr2 დაუყოვნებლივ arr1-ის შემდეგ
  • განყოფილების საწყისი მისამართების მითითება (XC8-2650) -Wl,–section-start ოფცია ჩუმად ვერ ახერხებდა სექციების განთავსებას ნომინირებულ დაწყების მისამართზე. ეს პრობლემა დაფიქსირდა ნებისმიერი მორგებული დასახელების განყოფილებისთვის; თუმცა, ის არ იმუშავებს არცერთ სტანდარტულ სექციებზე, როგორიცაა .text ან .bss, რომელიც უნდა განთავსდეს -Wl,-T ვარიანტის გამოყენებით. ლინკერი იშლება მოდუნებისას (XC8-2647) როდესაც ჩართული იყო -mrelax ოპტიმიზაცია და იყო კოდის ან მონაცემთა სექციები, რომლებიც არ ჯდებოდა ხელმისაწვდომ მეხსიერებაში, ლინკერი ავარიულად იშლებოდა. ახლა, ასეთ ვითარებაში, ამის ნაცვლად, შეცდომის შეტყობინებები გაიცემა.
  • No-falling-back (XC8-2646) –nofallback ვარიანტი არ იყო სწორად დანერგილი და არც დოკუმენტირებული. ეს ახლა შეიძლება შეირჩეს, რათა უზრუნველყოფილი იყოს, რომ შემდგენელი არ დაუბრუნდეს ოპტიმიზაციის უფრო დაბალ პარამეტრს, თუ შემდგენელი არალიცენზირებულია და ამის ნაცვლად გამოუშვას შეცდომა.
  • სიჩქარის შეუსაბამო ოპტიმიზაცია (XC8-2637) ჩართული იყო პროცედურული აბსტრაქციის ოპტიმიზაცია მე-3 დონის ოპტიმიზაციის (-O3) არჩევისას. ეს ოპტიმიზაცია ამცირებს კოდის ზომას კოდის სიჩქარის ხარჯზე, ამიტომ არ უნდა შესრულებულიყო.
  • ცუდი EEPROM წვდომა (XC8-2629) eeprom_read_block რუტინა არ მუშაობდა სწორად Xmega მოწყობილობებზე, როდესაც ჩართული იყო ოფცია – mconst-data-in-progmem (რაც ნაგულისხმევი მდგომარეობაა), რის შედეგადაც EEPROM მეხსიერება არ იკითხებოდა სწორად.
  • არასწორი მეხსიერების განაწილება (XC8-2593, XC8-2651) როდესაც -Ttext ან -Tdata დამაკავშირებელი ვარიანტია (მაგ.ampმითითებულია -Wl დრაივერის ოფციონის გამოყენებით, შესაბამისი ტექსტის/მონაცემთა რეგიონის წარმოშობა განახლდა; თუმცა, საბოლოო მისამართი არ იყო მორგებული შესაბამისად, რამაც შეიძლება გამოიწვიოს რეგიონის გადამეტება სამიზნე მოწყობილობის მეხსიერების დიაპაზონში.
  • ავარია ზედმეტად მინიჭებული ფუნქციით (XC8-2580) შემდგენლის ავარია მოხდა, თუ ფუნქცია გამოცხადდა ერთზე მეტი შეფერხების, სიგნალის ან nmi ატრიბუტების გამოყენებით, მაგ., __ატრიბუტი__((__სიგნალი__, __interrupt__)).
  • არასწორი 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 ენის გაფართოება, შესაძლოა გამოეწვია პროცედურული აბსტრაქციის ოპტიმიზაციის ავარია, დიაპაზონის დიაპაზონის შესწორების შეცდომით.
  • არც ისე const (XC8-2271) strstr()-ის პროტოტიპები და სხვა ფუნქციები აღარ მიუთითოთ არასტანდარტული კვალიფიკატორი დაბრუნებულ სტრიქონების მაჩვენებლებზე, როდესაც const -mconst-data-in-progmem ფუნქცია გამორთულია. გაითვალისწინეთ, რომ avrxmega3 და avrtiny მოწყობილობებთან ერთად, ეს ფუნქცია მუდმივად ჩართულია.
  • დაკარგული ინიციალატორები (XC8-2269) როდესაც თარგმანის ერთეულში ერთზე მეტი ცვლადი მოთავსებულია განყოფილებაში (__სექციის ან __ატრიბუტის__((სექცია)) გამოყენებით), და პირველი ასეთი ცვლადი იყო ნულოვანი ინიციალიზაცია ან არ გააჩნდა ინიციალატორი, ინიციალიზატორები სხვა ცვლადები იმავე თარგმანის ერთეულში, რომლებიც განთავსებული იყო იმავე განყოფილებაში, დაიკარგა.

ვერსია 2.29 (ფუნქციური უსაფრთხოების გამოშვება)
არცერთი.

ვერსია 2.20

  • შეცდომა გრძელ ბრძანებებთან (XC8-1983) AVR სამიზნის გამოყენებისას, შემდგენელი შეიძლება შეჩერებულიყო ფაილის არ მოიძებნა შეცდომით, თუ ბრძანების სტრიქონი იყო ძალიან დიდი და შეიცავდა სპეციალურ სიმბოლოებს, როგორიცაა ციტატები, უკანა ხაზები და ა.შ.
  • არამიკუთვნებული rodata განყოფილება (XC8-1920) AVR დამაკავშირებელმა ვერ შეძლო მეხსიერების მინიჭება მორგებული rodata სექციებისთვის 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-size პროგრამა იუწყებოდა, რომ მხოლოდ წაკითხვის მონაცემები მოიხმარდა RAM-ს პროგრამის მეხსიერების ნაცვლად.
  • არასწორი პროგრამის მეხსიერების წაკითხვა (XC8-1783) პროექტები, რომლებიც შედგენილია მოწყობილობებისთვის, პროგრამული მეხსიერებით, რომლებიც შედგენილია მონაცემთა მისამართის სივრცეში და რომლებიც განსაზღვრავენ ობიექტებს PROGMEM მაკრო/ატრიბუტის გამოყენებით, შესაძლოა წაიკითხონ ეს ობიექტები არასწორი მისამართიდან.
  • შიდა შეცდომა ატრიბუტებთან (XC8-1773) შიდა შეცდომა წარმოიშვა, თუ თქვენ განსაზღვრავდით მაჩვენებლის ობიექტებს __at() ან ატრიბუტ() ჟეტონებით, კურსორის სახელსა და გაუქმებულ ტიპს შორის, მაგ.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 ან rcall სამიზნეს ზუსტად 4k ბაიტის დაშორებით.

ვერსია 2.00
არცერთი.

ცნობილი საკითხები

ქვემოთ მოცემულია შეზღუდვები შემდგენელის მუშაობაში. ეს შეიძლება იყოს ზოგადი კოდირების შეზღუდვები, ან გადახრები მომხმარებლის სახელმძღვანელოში მოცემული ინფორმაციისგან. სათაურში ფრჩხილებში ჩასმული იარლიყ(ებ)ი არის ამ საკითხის იდენტიფიკაცია თვალთვალის მონაცემთა ბაზაში. ეს შეიძლება იყოს მომგებიანი, თუ საჭიროა დაუკავშირდეთ მხარდაჭერას. ის ელემენტები, რომლებსაც არ აქვთ ეტიკეტები, არის შეზღუდვები, რომლებიც აღწერს მოდი ოპერანდს და რომლებიც, სავარაუდოდ, მუდმივად დარჩება ძალაში.

MPLAB X IDE ინტეგრაცია

  • MPLAB IDE ინტეგრაცია თუ კომპილერი უნდა იყოს გამოყენებული MPLAB IDE-დან, მაშინ კომპილერის ინსტალაციამდე უნდა დააინსტალიროთ MPLAB IDE.
  • მასივის გამართვის ინფორმაცია (XC8-3157) შემდგენელის მიერ წარმოებული გამართვის ინფორმაცია ზუსტად არ გადმოსცემს __memx მისამართის სივრცეში მასივების ობიექტის ტიპს. ეს ხელს შეუშლის ობიექტზე დაკვირვებას IDE-ში.

კოდის გენერაცია

  • 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 ჩაშენებული ვარიანტები იქნება გამოყენებული.
  • არაოპტიმალური მხოლოდ წაკითხვის მონაცემების განთავსება (XC8-2849) დამაკავშირებელმა ამჟამად არ იცის მეხსიერების APPCODE და APPDATA სექციები და არც [No-]Read-While-Write განყოფილებები მეხსიერების რუკაში. შედეგად, არსებობს მცირე შანსი, რომ ლინკერმა გამოყოს მხოლოდ წაკითხული მონაცემები მეხსიერების შეუფერებელ ზონაში. არასწორად განთავსებული მონაცემების შანსი იზრდება, თუ ჩართულია const-data-in-progmem ფუნქცია, განსაკუთრებით თუ ჩართულია const-data-in-config-mapped-progmem ფუნქცია. საჭიროების შემთხვევაში, ეს ფუნქციები შეიძლება გამორთოთ.
  • ობიექტის ფაილების დამუშავების თანმიმდევრობა (XC8-2863) ლინკერის მიერ ობიექტების ფაილების დამუშავების თანმიმდევრობა შეიძლება განსხვავდებოდეს პროცედურული აბსტრაქციის ოპტიმიზაციის გამოყენების საფუძველზე (-mpa ვარიანტი). ეს გავლენას მოახდენს მხოლოდ კოდზე, რომელიც განსაზღვრავს სუსტ ფუნქციებს მრავალ მოდულში.
  • ლინკერის შეცდომა აბსოლუტურით (XC8-2777) როდესაც ობიექტი აბსოლუტურია მისამართზე RAM-ის დაწყებისას და ასევე განისაზღვრა არაინიციალიზებული ობიექტები, შეიძლება მოხდეს ლინკერის შეცდომა.
  • მოკლე გაღვიძების ID (XC8-2775) ATA5700/2 მოწყობილობებისთვის, PHID0/1 რეგისტრები მხოლოდ 16 ბიტიანი სიგანით არის განსაზღვრული, ვიდრე 32 ბიტიანი.
  • ლინკერის ავარია სიმბოლოს გამოძახებისას (XC8-2758) ლინკერი შეიძლება დაზიანდეს, თუ -mrelax დრაივერის ოფცია გამოყენებული იქნება, როდესაც წყაროს კოდი იძახებს სიმბოლოს, რომელიც განსაზღვრულია – Wl,–defsym ლინკერის ოფციის გამოყენებით.
  • არასწორი ინიციალიზაცია (XC8-2679) არსებობს შეუსაბამობა, თუ სად არის მონაცემთა მეხსიერებაში განთავსებული ზოგიერთი გლობალური/სტატიკური ბაიტის ზომის ობიექტების საწყისი მნიშვნელობები და სადაც ცვლადებზე იქნება წვდომა გაშვების დროს.
  • არასწორი არაპირდაპირი ფუნქციის გამოძახებები (XC8-2628) ზოგიერთ შემთხვევაში, ფუნქციის ზარები, რომლებიც შესრულებულია ფუნქციის მაჩვენებლის მეშვეობით, რომელიც ინახება სტრუქტურის ნაწილად, შეიძლება წარუმატებელი იყოს.
  • strtof აბრუნებს ნულს თექვსმეტობითი ათწლეულებისთვის (XC8-2626) ბიბლიოთეკის ფუნქციები strtof() et al და scanf() et al, ყოველთვის გადააქცევს თექვსმეტობით მცურავი წერტილის რიცხვს, რომელიც არ განსაზღვრავს მაჩვენებელს ნულზე. მაგample: strtof(“0x1”, &endptr); დააბრუნებს მნიშვნელობას 0 და არა 1.
  • სტეკის მრჩეველის არაზუსტი შეტყობინებები (XC8-2542, XC8-2541) ზოგიერთ შემთხვევაში, სტეკის მრჩეველის გაფრთხილება გამოყენებული რეკურსიის ან განუსაზღვრელი სტეკის შესახებ (შესაძლოა alloca()-ის გამოყენებით) არ არის გამოშვებული.
  • შეფერხების დუბლიკატი კოდის წარუმატებლობა (XC8-2421) სადაც ერთზე მეტ შეფერხების ფუნქციას აქვს ერთი და იგივე სხეული, შემდგენელს შეიძლება ჰქონდეს გამომავალი ერთი შეფერხების ფუნქციის გამოძახება მეორეზე. ეს გამოიწვევს ყველა ზარის ჩაკეტილი რეგისტრის ზედმეტ შენახვას და შეფერხებები ჩაირთვება მანამდეც კი, სანამ მიმდინარე შეფერხების დამმუშავებლის ეპილოგი არ ამოიწურება, რამაც შეიძლება გამოიწვიოს კოდის უკმარისობა.
  • ცუდი გამომავალი არასწორი DFP ბილიკით (XC8-2376) თუ შემდგენელი გამოძახებულია არასწორი DFP ბილიკით და არჩეული მოწყობილობისთვის არსებობს 'spec' ფაილი, შემდგენელი არ აცნობებს დაკარგული მოწყობილობის ოჯახის პაკეტს და ამის ნაცვლად ირჩევს 'spec' ფაილი, რამაც შეიძლება გამოიწვიოს არასწორი გამომავალი. „სპეციფიკური“ ფაილები შეიძლება არ იყოს განახლებული განაწილებულ DFP-ებთან და განკუთვნილი იყო მხოლოდ შიდა შემდგენელის ტესტირებისთვის გამოსაყენებლად.
  • მეხსიერების გადახურვა არ არის აღმოჩენილი (XC8-1966) შემდგენელი არ აფიქსირებს მეხსიერების გადაფარვას, რომელიც აბსოლუტურია მისამართზე (__at()) და სხვა ობიექტების გამოყენებით __section() სპეციფიკატორის გამოყენებით და რომლებიც დაკავშირებულია იმავე მისამართთან.
  • ბიბლიოთეკის ფუნქციების და __memx (XC8-1763) ფუნქციების წარუმატებლობა, რომელსაც ეწოდება libgcc oat ფუნქციები არგუმენტით __memx მისამართების სივრცეში, შესაძლოა ვერ მოხდეს. გაითვალისწინეთ, რომ ბიბლიოთეკის რუტინები გამოძახებულია ზოგიერთი C ოპერატორისგან, მაგალითად, მაგალითადample, შემდეგი კოდი მოქმედებს: return regFloatVar > memxFloatVar;
  • შეზღუდული libgcc განხორციელება (AVRTC-731) ATTiny4/5/9/10/20/40 პროდუქტებისთვის, სტანდარტული C / მათემატიკის ბიბლიოთეკის განხორციელება libgcc-ში ძალიან შეზღუდულია ან არ არის წარმოდგენილი.
  • პროგრამის მეხსიერების შეზღუდვები (AVRTC-732) პროგრამის მეხსიერების გამოსახულებები 128 კბ-ზე მეტი მხარდაჭერილია ინსტრუმენტთა ჯაჭვის მიერ; თუმცა, ცნობილია ლინკერის შეწყვეტის შემთხვევები რელაქსაციის გარეშე და გამოსადეგი შეცდომის შეტყობინებების გარეშე, ვიდრე -mrelax ოფციის გამოყენებისას საჭირო ფუნქციის ნაკრებების გენერირება.
  • სახელების სივრცის შეზღუდვები (AVRTC-733) დასახელებული მისამართების სივრცეები მხარდაჭერილია ხელსაწყოების ჯაჭვის მიერ, ექვემდებარება მომხმარებლის სახელმძღვანელოს სექციაში სპეციალური ტიპების კვალიფიკაციებს.
  • დროის ზონები The ბიბლიოთეკის ფუნქციები ითვალისწინებს GMT-ს და არ უჭერს მხარს ლოკალურ სასაათო სარტყლებს, შესაბამისად localtime() დაბრუნდება იმავე დროს, როგორც gmtime() , მაგ.ampლე.

დოკუმენტები / რესურსები

MICROCHIP XC8 C შემდგენელი ვერსია 2.45 გამოშვების შენიშვნები AVR MCU-სთვის [pdf] ინსტრუქციები
AVR MCU, XC8 C, XC8 C შემდგენელი ვერსია 2.45 გამოშვების შენიშვნები AVR MCU-სთვის, შემდგენელი ვერსია 2.45 გამოშვების შენიშვნები AVR MCU-სთვის, ვერსია 2.45 გამოშვების შენიშვნები AVR MCU-სთვის, გამოშვების შენიშვნები AVR MCU-სთვის, შენიშვნები AVRCU-სთვის

ცნობები

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. მონიშნულია აუცილებელი ველები *