మైక్రోచిప్ లోగోAVR® MCU కోసం MPLAB® XC8 C కంపైలర్ వెర్షన్ 2.41 విడుదల నోట్స్
యజమాని మాన్యువల్

MPLAB XC8 C కంపైలర్ డెవలప్‌మెంట్ సాఫ్ట్‌వేర్

మైక్రోచిప్ AVR పరికరాలను లక్ష్యంగా చేసుకున్నప్పుడు MPLAB XC8 C కంపైలర్‌కు సంబంధించిన ముఖ్యమైన సమాచారాన్ని ఈ పత్రం కలిగి ఉంటుంది.
ఈ సాఫ్ట్‌వేర్‌ను అమలు చేయడానికి ముందు దయచేసి చదవండి. మీరు 8-బిట్ PIC పరికరాల కోసం కంపైలర్‌ని ఉపయోగిస్తుంటే, PIC డాక్యుమెంట్ కోసం MPLAB XC8 C కంపైలర్ విడుదల గమనికలను చూడండి.

పైగాview

1.1. పరిచయం
మైక్రోచిప్ MPLAB® XC8 C కంపైలర్ యొక్క ఈ విడుదల అనేక కొత్త ఫీచర్లు మరియు బగ్ పరిష్కారాలను కలిగి ఉంది.
1.2 నిర్మాణ తేదీ
ఈ కంపైలర్ వెర్షన్ యొక్క అధికారిక నిర్మాణ తేదీ 8 ఫిబ్రవరి 2023.
1.3 మునుపటి సంస్కరణ
మునుపటి MPLAB XC8 C కంపైలర్ వెర్షన్ 2.40 3 జూలై 2022న నిర్మించబడింది.
1.4 ఫంక్షనల్ సేఫ్టీ మాన్యువల్
మీరు ఫంక్షనల్ సేఫ్టీ లైసెన్స్‌ను కొనుగోలు చేసినప్పుడు MPLAB XC కంపైలర్‌ల కోసం ఫంక్షనల్ సేఫ్టీ మాన్యువల్ డాక్యుమెంటేషన్ ప్యాకేజీలో అందుబాటులో ఉంటుంది.
1.5 కాంపోనెంట్ లైసెన్స్‌లు మరియు సంస్కరణలు
AVR MCUల సాధనాల కోసం MPLAB XC8 C కంపైలర్ GNU జనరల్ పబ్లిక్ లైసెన్స్ (GPL) క్రింద వ్రాయబడి పంపిణీ చేయబడుతుంది అంటే దాని సోర్స్ కోడ్ ఉచితంగా పంపిణీ చేయబడుతుంది మరియు ప్రజలకు అందుబాటులో ఉంటుంది.
GNU GPL క్రింద ఉన్న సాధనాల కోసం సోర్స్ కోడ్ మైక్రోచిప్ నుండి విడిగా డౌన్‌లోడ్ చేయబడవచ్చు webసైట్. మీరు మీ ఇన్‌స్టాల్ లైసెన్స్.txt avr/doc డైరెక్టరీ యొక్క ఉప డైరెక్టరీ ఉన్న ఫైల్‌లో GNU GPLని చదవవచ్చు. GPL అంతర్లీనంగా ఉన్న సూత్రాల సాధారణ చర్చను ఇక్కడ చూడవచ్చు.
హెడర్ ఫైల్‌లు, లింకర్ స్క్రిప్ట్‌లు మరియు రన్‌టైమ్ లైబ్రరీలకు అందించబడిన మద్దతు కోడ్ యాజమాన్య కోడ్ మరియు GPL పరిధిలోకి రావు.
ఈ కంపైలర్ GCC వెర్షన్ 5.4.0, binutils వెర్షన్ 2.26 అమలు, మరియు avr-libc వెర్షన్ 2.0.0ని ఉపయోగిస్తుంది.
1.6. సిస్టమ్ అవసరాలు
MPLAB XC8 C కంపైలర్ మరియు అది ఉపయోగించే లైసెన్సింగ్ సాఫ్ట్‌వేర్ వివిధ రకాల ఆపరేటింగ్ సిస్టమ్‌లకు అందుబాటులో ఉన్నాయి, వీటిలో కింది వాటి యొక్క 64-బిట్ వెర్షన్‌లు ఉన్నాయి: Microsoft® Windows® 10 యొక్క ప్రొఫెషనల్ ఎడిషన్‌లు; ఉబుంటు® 18.04; మరియు macOS® 10.15.5. Windows కోసం బైనరీలు కోడ్-సంతకం చేయబడ్డాయి. MacOS కోసం బైనరీలు కోడ్-సంతకం మరియు నోటరీ చేయబడ్డాయి. MPLAB XC నెట్‌వర్క్ లైసెన్స్ సర్వర్ Microsoft Windows 64 మరియు అంతకంటే ఎక్కువ వాటితో సహా వివిధ 10-బిట్ ఆపరేటింగ్ సిస్టమ్‌లకు అందుబాటులో ఉంది; ఉబుంటు 18.04 మరియు అంతకంటే ఎక్కువ; లేదా macOS 10.15 మరియు అంతకంటే ఎక్కువ. సర్వర్ Windows Server, Linux పంపిణీలు, Oracle® Enterprise Linux® మరియు Red Hate Enterprise Linux అలాగే మద్దతు ఉన్న ఆపరేటింగ్ సిస్టమ్‌ల పాత వెర్షన్‌లతో సహా అనేక ఇతర ఆపరేటింగ్ సిస్టమ్‌లలో కూడా రన్ కావచ్చు. అయితే, MPLAB XC నెట్‌వర్క్ లైసెన్స్ సర్వర్ ఈ ఆపరేటింగ్ సిస్టమ్‌లలో పరీక్షించబడదు. MPLAB XC నెట్‌వర్క్ లైసెన్స్ సర్వర్ నెట్‌వర్క్ లైసెన్స్‌ల (SW006021-VM) కోసం వర్చువల్ మెషీన్ లైసెన్స్‌ని ఉపయోగించి మద్దతు ఉన్న OS యొక్క వర్చువల్ మెషీన్‌లపై అమలు చేయబడుతుంది. MPLAB XC నెట్‌వర్క్ సర్వర్ యొక్క అన్ని 32-బిట్ వెర్షన్‌లు వెర్షన్ 3.00 నుండి నిలిపివేయబడ్డాయి.
పరికరాలకు మద్దతు ఉంది
ఈ కంపైలర్ విడుదల సమయంలో అందుబాటులో ఉన్న అన్ని 8-బిట్ AVR MCU పరికరాలకు మద్దతు ఇస్తుంది. మద్దతు ఉన్న అన్ని పరికరాల జాబితా కోసం (కంపైలర్ డైరెక్టరీలో) చూడండి. ఈ ఫైల్‌లు కూడా జాబితా చేయబడ్డాయి
ప్రతి పరికరం కోసం avr_chipinfo.html డాక్ కాన్ఫిగరేషన్ బిట్ సెట్టింగ్‌లు.

1.7 ఎడిషన్‌లు మరియు లైసెన్స్ అప్‌గ్రేడ్‌లు
MPLAB XC8 కంపైలర్‌ను లైసెన్స్ పొందిన (PRO) లేదా లైసెన్స్ లేని (ఉచిత) ఉత్పత్తిగా యాక్టివేట్ చేయవచ్చు. మీ కంపైలర్‌కి లైసెన్స్ ఇవ్వడానికి మీరు యాక్టివేషన్ కీని కొనుగోలు చేయాలి. ఉచిత ఉత్పత్తితో పోలిస్తే లైసెన్స్ అధిక స్థాయి ఆప్టిమైజేషన్‌ను అనుమతిస్తుంది. లైసెన్స్ లేని కంపైలర్‌ను లైసెన్స్ లేకుండా నిరవధికంగా ఆపరేట్ చేయవచ్చు. MPLAB XC8 ఫంక్షనల్ సేఫ్టీ కంపైలర్ తప్పనిసరిగా మైక్రోచిప్ నుండి కొనుగోలు చేయబడిన ఫంక్షనల్ సేఫ్టీ లైసెన్స్‌తో యాక్టివేట్ చేయబడాలి. ఈ లైసెన్స్ లేకుండా కంపైలర్ పనిచేయదు. యాక్టివేట్ చేసిన తర్వాత, మీరు ఏదైనా ఆప్టిమైజేషన్ స్థాయిని ఎంచుకోవచ్చు మరియు అన్ని కంపైలర్ లక్షణాలను ఉపయోగించవచ్చు. MPLAB XC ఫంక్షనల్ సేఫ్టీ కంపైలర్ యొక్క ఈ విడుదల నెట్‌వర్క్ సర్వర్ లైసెన్స్‌కు మద్దతు ఇస్తుంది.
లైసెన్స్ రకాలు మరియు లైసెన్స్‌తో కంపైలర్‌ను ఇన్‌స్టాల్ చేయడం గురించి సమాచారం కోసం MPLAB XC C Compilers (DS50002059) పత్రాన్ని ఇన్‌స్టాల్ చేయడం మరియు లైసెన్సింగ్ చేయడం చూడండి.

1.8. సంస్థాపన మరియు సక్రియం
ఈ కంపైలర్‌తో చేర్చబడిన తాజా లైసెన్స్ మేనేజర్ గురించి ముఖ్యమైన సమాచారం కోసం మైగ్రేషన్ సమస్యలు మరియు పరిమితుల విభాగాలను కూడా చూడండి.
MPLAB IDEని ఉపయోగిస్తుంటే, ఈ సాధనాన్ని ఇన్‌స్టాల్ చేసే ముందు తాజా MPLAB X IDE వెర్షన్ 5.0 లేదా తదుపరిది ఇన్‌స్టాల్ చేయాలని నిర్ధారించుకోండి. కంపైలర్‌ను ఇన్‌స్టాల్ చేసే ముందు IDE నుండి నిష్క్రమించండి. (Windows), (Linux) లేదా (macOS) .exe .run .app కంపైలర్ ఇన్‌స్టాలర్ అప్లికేషన్‌ను అమలు చేయండి, ఉదా మరియు స్క్రీన్‌పై ఉన్న సూచనలను అనుసరించండి. XC8-1.00.11403-windows.exe డిఫాల్ట్ ఇన్‌స్టాలేషన్ డైరెక్టరీ సిఫార్సు చేయబడింది. మీరు Linuxని ఉపయోగిస్తుంటే, మీరు తప్పనిసరిగా టెర్మినల్ ఉపయోగించి మరియు రూట్ ఖాతా నుండి కంపైలర్‌ను ఇన్‌స్టాల్ చేయాలి. నిర్వాహక అధికారాలతో MacOS ఖాతాను ఉపయోగించి ఇన్‌స్టాల్ చేయండి.
సక్రియం ఇప్పుడు సంస్థాపనకు విడిగా నిర్వహించబడుతుంది. మరింత సమాచారం కోసం MPLAB® XC C Compilers (DS52059) కోసం డాక్యుమెంట్ లైసెన్స్ మేనేజర్‌ని చూడండి.
మీరు మూల్యాంకన లైసెన్స్ కింద కంపైలర్‌ను అమలు చేయాలని ఎంచుకుంటే, మీ మూల్యాంకన వ్యవధి ముగిసిన 14 రోజులలోపు మీరు ఇప్పుడు సంకలనం సమయంలో హెచ్చరికను పొందుతారు. మీరు మీ HPA సబ్‌స్క్రిప్షన్ ముగిసిన 14 రోజులలోపు ఉంటే అదే హెచ్చరిక జారీ చేయబడుతుంది.
XC నెట్‌వర్క్ లైసెన్స్ సర్వర్ ఒక ప్రత్యేక ఇన్‌స్టాలర్ మరియు సింగిల్-యూజర్ కంపైలర్ ఇన్‌స్టాలర్‌లో చేర్చబడలేదు.
XC లైసెన్స్ మేనేజర్ ఇప్పుడు ఫ్లోటింగ్ నెట్‌వర్క్ లైసెన్స్‌ల రోమింగ్‌కు మద్దతు ఇస్తుంది. మొబైల్ వినియోగదారులను లక్ష్యంగా చేసుకుని, ఈ ఫీచర్ ఫ్లోటింగ్ లైసెన్స్‌ను తక్కువ వ్యవధిలో నెట్‌వర్క్‌ను ఆపివేయడానికి అనుమతిస్తుంది. ఈ ఫీచర్‌ని ఉపయోగించి, మీరు నెట్‌వర్క్ నుండి డిస్‌కనెక్ట్ చేయవచ్చు మరియు ఇప్పటికీ మీ MPLAB XC కంపైలర్‌ని ఉపయోగించవచ్చు. ఈ ఫీచర్ గురించి మరింత తెలుసుకోవడానికి XCLM ఇన్‌స్టాల్ యొక్క డాక్ ఫోల్డర్‌ను చూడండి.
MPLAB X IDE రోమింగ్‌ని దృశ్యమానంగా నిర్వహించడానికి లైసెన్స్‌ల విండో (సాధనాలు > లైసెన్స్‌లు)ని కలిగి ఉంటుంది.

1.8.1 ఇన్‌స్టాలేషన్ సమస్యలను పరిష్కరిస్తోంది
ఏదైనా Windows ఆపరేటింగ్ సిస్టమ్‌లలో కంపైలర్‌ను ఇన్‌స్టాల్ చేయడంలో మీకు ఇబ్బందులు ఎదురైతే, ఈ క్రింది సూచనలను ప్రయత్నించండి.
ఇన్‌స్టాల్‌ను అడ్మినిస్ట్రేటర్‌గా అమలు చేయండి.
ఇన్‌స్టాలర్ అప్లికేషన్ యొక్క అనుమతులను 'పూర్తి నియంత్రణ'కి సెట్ చేయండి. (ఫైల్‌పై కుడి-క్లిక్ చేయండి, ప్రాపర్టీస్, సెక్యూరిటీ ట్యాబ్ ఎంచుకోండి, వినియోగదారుని ఎంచుకోండి, సవరించండి.)
తాత్కాలిక ఫోల్డర్ యొక్క అనుమతులను 'పూర్తి నియంత్రణ'కి సెట్ చేయండి.
టెంప్ ఫోల్డర్ యొక్క స్థానాన్ని గుర్తించడానికి, రన్ కమాండ్‌లో %temp% అని టైప్ చేయండి (Windows లోగో కీ + R).
ఇది ఆ డైరెక్టరీని చూపించే ఫైల్ ఎక్స్‌ప్లోరర్ డైలాగ్‌ను తెరుస్తుంది మరియు ఆ ఫోల్డర్ యొక్క మార్గాన్ని నిర్ణయించడానికి మిమ్మల్ని అనుమతిస్తుంది.
1.9 కంపైలర్ డాక్యుమెంటేషన్
స్క్రీన్‌షాట్‌లో సూచించినట్లుగా, MPLAB X IDE డ్యాష్‌బోర్డ్‌లోని నీలిరంగు సహాయ బటన్‌ను క్లిక్ చేసినప్పుడు మీ బ్రౌజర్‌లో తెరుచుకునే HTML పేజీ నుండి కంపైలర్ యొక్క వినియోగదారు గైడ్‌లు తెరవబడతాయి.

మీరు 8-బిట్ AVR లక్ష్యాల కోసం రూపొందిస్తున్నట్లయితే, AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్ ఈ ఆర్కిటెక్చర్‌కు వర్తించే కంపైలర్ ఎంపికలు మరియు లక్షణాలపై సమాచారాన్ని కలిగి ఉంటుంది.

మైక్రోచిప్ MPLAB XC8 C కంపైలర్ డెవలప్‌మెంట్ సాఫ్ట్‌వేర్ -

1.10.కస్టమర్ సపోర్ట్
మైక్రోచిప్ ఈ కంపైలర్ సంస్కరణకు సంబంధించి బగ్ నివేదికలు, సూచనలు లేదా వ్యాఖ్యలను స్వాగతించింది. దయచేసి ఏవైనా బగ్ నివేదికలు లేదా ఫీచర్ అభ్యర్థనలను సపోర్ట్ సిస్టమ్ ద్వారా డైరెక్ట్ చేయండి.

డాక్యుమెంటేషన్ నవీకరణలు

MPLAB XC8 డాక్యుమెంటేషన్ యొక్క ఆన్‌లైన్ మరియు తాజా వెర్షన్‌ల కోసం, దయచేసి మైక్రోచిప్ యొక్క ఆన్‌లైన్ టెక్నికల్ డాక్యుమెంటేషన్‌ని సందర్శించండి webసైట్. ఈ విడుదలలో కొత్త లేదా నవీకరించబడిన AVR డాక్యుమెంటేషన్:

  • AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్ (రివిజన్ G)
  • AVR® GNU Toolchain to MPLAB® XC8 మైగ్రేషన్ గైడ్ (రివిజన్ A)
  • హెక్స్‌మేట్ యూజర్స్ గైడ్ (రివిజన్ బి)

AVR® GNU Toolchain to MPLAB® XC8 మైగ్రేషన్ గైడ్ సోర్స్ కోడ్‌కు మార్పులను వివరిస్తుంది మరియు మీరు AVR 8-బిట్ GNU టూల్‌చెయిన్ నుండి మైక్రోచిప్ MPLAB XC8 C కంపైలర్‌కి C-ఆధారిత ప్రాజెక్ట్‌ను మార్చాలని నిర్ణయించుకుంటే అవసరమైన బిల్డ్ ఎంపికలను వివరిస్తుంది. మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్ మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీచే నిర్వచించబడిన ఫంక్షన్‌ల ప్రవర్తన మరియు ఇంటర్‌ఫేస్‌ను వివరిస్తుంది, అలాగే లైబ్రరీ రకాలు మరియు మాక్రోల యొక్క ఉద్దేశిత వినియోగాన్ని వివరిస్తుంది. ఈ సమాచారంలో కొంత భాగం గతంలో AVR® MCU కోసం MPLAB® XC8 C కంపైలర్ యూజర్స్ గైడ్‌లో ఉంది. పరికర-నిర్దిష్ట లైబ్రరీ సమాచారం ఇప్పటికీ ఈ కంపైలర్ గైడ్‌లో ఉంది.
మీరు ఇప్పుడే 8-బిట్ పరికరాలు మరియు MPLAB XC8 C కంపైలర్‌తో ప్రారంభిస్తుంటే, ఎంబెడెడ్ ఇంజనీర్ల కోసం MPLAB® XC8 యూజర్స్ గైడ్ – AVR® MCUs (DS50003108) MPLAB X IDEలో ప్రాజెక్ట్‌లను సెటప్ చేయడం మరియు మీ కోసం కోడ్ రాయడం గురించి సమాచారాన్ని కలిగి ఉంటుంది. మొదటి MPLAB XC8 C ప్రాజెక్ట్. ఈ గైడ్ ఇప్పుడు కంపైలర్‌తో పంపిణీ చేయబడింది.
హెక్స్‌మేట్ యూజర్స్ గైడ్ అనేది హెక్స్‌మేట్‌ని స్టాండ్-అలోన్ అప్లికేషన్‌గా అమలు చేసే వారి కోసం ఉద్దేశించబడింది.

కొత్తవి ఏమిటి

కంపైలర్ ఇప్పుడు మద్దతిచ్చే కొత్త AVR-లక్ష్య లక్షణాలు క్రిందివి. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే లక్షణాలకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.
3.1 వెర్షన్ 2.41
బూట్రో మద్దతు (XC8-3053) కంపైలర్ HEX ఫైల్‌లో at.bootrow చిరునామా 0x860000 ప్రిఫిక్స్‌తో ఏదైనా విభాగాల కంటెంట్‌ను ఉంచుతుంది. ఈ విభాగాలు BOOTROW మెమరీ కోసం ఉపయోగించబడతాయి, ఇది బూట్‌లోడర్‌కు మాత్రమే అందుబాటులో ఉండే కీలు మరియు ఇతర సురక్షిత సమాచారం యొక్క నిల్వ కోసం రూపొందించబడింది.

రిడెండెంట్ రిటర్న్ ఎలిమినేషన్ (XC8-3048) కంపైలర్ ఇప్పుడు కస్టమ్ లింకర్ స్క్రిప్ట్‌లను ఉపయోగించినప్పుడు టెయిల్ జంప్‌తో రెట్ ఫంక్షన్‌లలో రిడెండెంట్ సూచనలను తొలగిస్తుంది. ఇది గతంలో ప్రదర్శించిన దానితో సమానమైన ఆప్టిమైజేషన్, కానీ ఇప్పుడు కస్టమ్ లింకర్ స్క్రిప్ట్ ఉపయోగించబడినప్పటికీ మరియు ఉత్తమ ఫిట్ కేటాయింపు పథకం అమలులో లేనప్పటికీ, ఇది ఇప్పుడు అన్ని అనాథ విభాగాలలో ప్రదర్శించబడుతుంది. సమయ రకం మార్పు (XC8-2982, 2932) C99 స్టాండర్డ్ లైబ్రరీ రకం, time_t నుండి ఒక రకానికి మార్చబడింది, ఇది కొంత సమయ-సంబంధిత లాంగ్ లాంగ్ ఫంక్షన్‌లలో కోడ్-సైజ్ మెరుగుదలలను అందిస్తుంది. సంతకం చేయని దీర్ఘ mktime()
కొత్త nop (XC8-2946, 2945)కి మాక్రో జోడించబడింది. ఈ మాక్రో no- NOP()ని ఇన్‌సర్ట్ చేస్తుంది అవుట్‌పుట్‌లోకి nop ఆపరేషన్ సూచన.
XCLMకి నవీకరించండి (XC8-2944) కంపైలర్‌తో ఉపయోగించిన లైసెన్స్ మేనేజర్ నవీకరించబడింది మరియు ఇప్పుడు కంపైలర్ లైసెన్స్ వివరాలను తనిఖీ చేస్తున్నప్పుడు మరింత ప్రతిస్పందిస్తుంది.
Trampఒలైన్డ్ కాల్‌లు (XC8-2760) సూచనల యొక్క సాపేక్ష ఫారమ్‌లు సాధారణంగా వాటి గమ్యస్థానం పరిధిలో లేనప్పుడు కంపైలర్ ఇప్పుడు దీర్ఘ-రూప కాల్ సూచనలను తక్కువ సాపేక్ష కాల్‌లతో భర్తీ చేయగలదు. ఈ పరిస్థితిలో, కంపైలర్ rcall సూచనలను కాల్ చేయడానికి సూచనలతో భర్తీ చేయడానికి ప్రయత్నిస్తుంది, అది 'trampఅవసరమైన చిరునామాకు ఓలైన్ అమలు, ఉదాహరణకుample: jmp
rcall tramp_foo ; foo అని పిలిచారు

rcall tramp_ఫూ

tramp_foo:
jmp foo

ఈ ఆప్టిమైజేషన్, సారూప్య ప్రోగ్రామ్ ఫ్లో ఆప్టిమైజేషన్‌లతో పాటు -mrelax ఎంపిక ద్వారా నియంత్రించబడుతుంది.

3.2 వెర్షన్ 2.40
కింది AVR భాగాలకు ఇప్పుడు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64DD28, AVR64DD32, 64, మరియు AVR48EAXNUMX.
మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ (PA) ఆప్టిమైజేషన్ సాధనం మెరుగుపరచబడింది, తద్వారా ఫంక్షన్ కాల్ సూచన (/ )ని కలిగి ఉన్న కోడ్‌ని ఉపయోగించుకోవచ్చు. ఆర్గ్యుమెంట్‌లను పంపడానికి లేదా ఫంక్షన్ నుండి రిటర్న్ విలువను పొందేందుకు స్టాక్ ఉపయోగించకపోతే మాత్రమే ఇది కాల్ rcall జరుగుతుంది. వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్‌తో ఫంక్షన్‌కు కాల్ చేస్తున్నప్పుడు లేదా ఈ ప్రయోజనం కోసం కేటాయించిన రిజిస్టర్‌ల కంటే ఎక్కువ ఆర్గ్యుమెంట్‌లను తీసుకునే ఫంక్షన్‌కు కాల్ చేస్తున్నప్పుడు స్టాక్ ఉపయోగించబడుతుంది. ఎంపికను ఉపయోగించి ఈ లక్షణాన్ని నిలిపివేయవచ్చు లేదా ఆబ్జెక్ట్ ఫైల్ లేదా ఫంక్షన్‌కు విధానపరమైన సంగ్రహణను పూర్తిగా నిలిపివేయవచ్చు- మరియు, వరుసగా, లేదా ఫంక్షన్‌లతో ఎంపిక చేసిన లక్షణాన్ని (స్పెసిఫైయర్) ఉపయోగించడం ద్వారా.
mno-pa-outline-calls -mno-pa-on-file -mno-pa-on-function nopa కోడ్ కవరేజ్ మాక్రో చెల్లుబాటు అయ్యే ఎంపిక __nopa __CODECOV -mcodecov నిర్దేశించబడితే కంపైలర్ ఇప్పుడు మాక్రోని నిర్వచిస్తుంది.
మెమరీ రిజర్వేషన్ ఎంపిక AVR లక్ష్యాలను నిర్మించేటప్పుడు డ్రైవర్ ఇప్పుడు xc8-cc -mreserve=space@start:end ఎంపికను అంగీకరిస్తుంది. ఈ ఐచ్ఛికం డేటా లేదా ప్రోగ్రామ్ మెమరీ స్థలంలో పేర్కొన్న మెమరీ పరిధిని రిజర్వ్ చేస్తుంది, ఈ ప్రాంతంలో కోడ్ లేదా ఆబ్జెక్ట్‌లను నింపకుండా లింకర్‌ను నిరోధిస్తుంది. స్మార్టర్ స్మార్ట్ IO స్మార్ట్ IO ఫంక్షన్‌లకు అనేక మెరుగుదలలు చేయబడ్డాయి, వీటిలో printf కోర్ కోడ్‌కు సాధారణ ట్వీక్‌లు ఉన్నాయి, %n కన్వర్షన్ స్పెసిఫైయర్‌ను స్వతంత్ర వేరియంట్‌గా పరిగణించడం, డిమాండ్‌పై vararg పాప్ రొటీన్‌లలో లింక్ చేయడం, హ్యాండ్లింగ్ కోసం సాధ్యమైన చోట తక్కువ డేటా రకాలను ఉపయోగించడం. IO ఫంక్షన్ ఆర్గ్యుమెంట్‌లు మరియు ఫీల్డ్ వెడల్పు మరియు ఖచ్చితత్వ నిర్వహణలో సాధారణ కోడ్‌ను కారకం. ఇది ముఖ్యమైన కోడ్ మరియు డేటా పొదుపులకు దారి తీస్తుంది, అలాగే IO యొక్క అమలు వేగాన్ని పెంచుతుంది.

3.3 వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
నెట్‌వర్క్ సర్వర్ లైసెన్స్ MPLAB XC8 ఫంక్షనల్ సేఫ్టీ కంపైలర్ యొక్క ఈ విడుదల నెట్‌వర్క్ సర్వర్ లైసెన్స్‌కు మద్దతు ఇస్తుంది.
3.4 వెర్షన్ 2.36
ఏదీ లేదు.

3.5 వెర్షన్ 2.35
కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 మరియు AVR64DD32.
మెరుగైన సందర్భ మార్పిడి కొత్త -mcall-isr-prologues ఎంపిక ఇంటర్‌ప్ట్ ఫంక్షన్‌లు ఎంట్రీలో రిజిస్టర్‌లను ఎలా సేవ్ చేస్తాయి మరియు అంతరాయ రొటీన్ ముగిసినప్పుడు ఆ రిజిస్టర్‌లు ఎలా పునరుద్ధరించబడతాయి. ఇది -mcall-prologues ఎంపిక మాదిరిగానే పనిచేస్తుంది, కానీ అంతరాయ ఫంక్షన్‌లను (ISRలు) మాత్రమే ప్రభావితం చేస్తుంది.
మరింత మెరుగైన సందర్భ మార్పిడి కొత్త -mgas-isr-prologues ఎంపిక చిన్న అంతరాయ సేవా రొటీన్‌ల కోసం రూపొందించబడిన సందర్భ స్విచ్ కోడ్‌ను నియంత్రిస్తుంది. ప్రారంభించబడినప్పుడు, ఈ ఫీచర్ అసెంబ్లర్ రిజిస్టర్ వినియోగం కోసం ISRని స్కాన్ చేస్తుంది మరియు అవసరమైతే ఈ ఉపయోగించిన రిజిస్టర్‌లను మాత్రమే సేవ్ చేస్తుంది.
కాన్ఫిగర్ చేయగల ఫ్లాష్ మ్యాపింగ్ AVR DA మరియు AVR DB కుటుంబంలోని కొన్ని పరికరాలు SFR (ఉదా. FLMAP)ని కలిగి ఉంటాయి, ఇది ప్రోగ్రామ్ మెమరీలో ఏ 32k విభాగం డేటా మెమరీలో మ్యాప్ చేయబడుతుందో నిర్దేశిస్తుంది. కొత్త – mconst-data-in-config-mapped-progmem ఎంపికను లింకర్ ఒక 32k విభాగంలో అన్ని const-క్వాలిఫైడ్ డేటాను ఉంచడానికి ఉపయోగించవచ్చు మరియు ఈ డేటా డేటా మెమరీలో మ్యాప్ చేయబడిందని నిర్ధారించుకోవడానికి సంబంధిత SFR రిజిస్టర్‌ను స్వయంచాలకంగా ప్రారంభించవచ్చు. స్పేస్, ఇక్కడ అది మరింత ప్రభావవంతంగా యాక్సెస్ చేయబడుతుంది.
మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీలు అన్ని MPLAB XC కంపైలర్‌లు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీని షేర్ చేస్తాయి, ఇది ఇప్పుడు MPLAB XC8 విడుదలతో అందుబాటులో ఉంది. AVO MCU కోసం MPLA# XC8 C కంపైలర్ యూజర్స్ గైడ్‌లో ఈ స్టాండర్డ్ ఫంక్షన్‌ల డాక్యుమెంటేషన్ ఉండదు. ఈ సమాచారాన్ని ఇప్పుడు మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ రిఫరెన్స్ గైడ్‌లో కనుగొనవచ్చు. avr-libc ద్వారా గతంలో నిర్వచించబడిన కొంత కార్యాచరణ ఇప్పుడు అందుబాటులో లేదని గమనించండి. (లీలా కార్యాచరణను చూడండి.)
స్మార్ట్ I0 కొత్త ఏకీకృత లైబ్రరీలలో భాగంగా, ప్రింట్‌ఎఫ్ మరియు స్కాన్ఎఫ్ కుటుంబాలలోని ఐ0 ఫంక్షన్‌లు ఇప్పుడు ప్రోగ్రామ్‌లో ఈ ఫంక్షన్‌లు ఎలా ఉపయోగించబడుతున్నాయనే దాని ఆధారంగా ప్రతి బిల్డ్‌పై అనుకూల-జనరేట్ చేయబడ్డాయి. ఇది ప్రోగ్రామ్ ఉపయోగించే వనరులను గణనీయంగా తగ్గిస్తుంది.
స్మార్ట్ ICI సహాయ ఎంపిక స్మార్ట్ I0 ఫంక్షన్‌లకు కాల్‌లను విశ్లేషించేటప్పుడు (ప్రింట్ ఎఫ్ () లేదా స్కాన్ఎఫ్ () వంటివి), కంపైలర్ ఎల్లప్పుడూ ఫార్మాట్ స్ట్రింగ్ నుండి గుర్తించలేరు లేదా కాల్‌కు అవసరమైన మార్పిడి నిర్దేశకాలను ఆర్గ్యుమెంట్‌ల నుండి ఊహించలేరు. మునుపు, కంపైలర్ ఎల్లప్పుడూ ఎటువంటి ఊహలను చేయదు మరియు పూర్తి ఫంక్షనల్ 10 ఫంక్షన్‌లు తుది ప్రోగ్రామ్ ఇమేజ్‌కి లింక్ చేయబడిందని నిర్ధారిస్తుంది. కొత్త – msmart-io-format=fmt ఐచ్ఛికం జోడించబడింది, తద్వారా కంపైలర్‌కు బదులుగా స్మార్ట్ I0 ఫంక్షన్‌ల ద్వారా ఉపయోగించే కన్వర్షన్ స్పెసిఫైయర్‌ల గురించి వినియోగదారు తెలియజేయవచ్చు, దీని వినియోగం అస్పష్టంగా ఉంటుంది, అధిక పొడవైన 10 రొటీన్‌లను లింక్ చేయకుండా నిరోధిస్తుంది. (మరిన్ని వివరాల కోసం smart-io-format ఎంపికను చూడండి.)
అనుకూల విభాగాలను ఉంచడం గతంలో, లింకర్ స్క్రిప్ట్ అదే పేరుతో అవుట్‌పుట్ విభాగాన్ని నిర్వచించినప్పుడు మాత్రమే -W1, –section-start ఎంపిక పేర్కొన్న విభాగాన్ని అభ్యర్థించిన చిరునామాలో ఉంచుతుంది. అది కానప్పుడు, లింకర్ ఎంచుకున్న చిరునామాలో విభాగం ఉంచబడింది మరియు ఎంపిక తప్పనిసరిగా విస్మరించబడింది. లింకర్ స్క్రిప్ట్ విభాగాన్ని నిర్వచించనప్పటికీ, ఇప్పుడు ఎంపిక అన్ని అనుకూల విభాగాలకు గౌరవించబడుతుంది. గమనించండి, అయితే, ప్రామాణిక విభాగాల కోసం, అటువంటి . వచనం, . bss లేదా . డేటా, ఉత్తమంగా సరిపోయే కేటాయింపుదారు వారి ప్లేస్‌మెంట్‌పై ఇప్పటికీ పూర్తి నియంత్రణను కలిగి ఉంటారు మరియు ఎంపిక ప్రభావం చూపదు. యూజర్ గైడ్‌లో వివరించిన విధంగా -ton, -Tsection=addr ఎంపికను ఉపయోగించండి.
3.6 వెర్షన్ 2.32
PRO కంపైలర్ లైసెన్స్‌తో స్టాక్ గైడెన్స్ అందుబాటులో ఉంటుంది, ప్రోగ్రామ్ ఉపయోగించే ఏదైనా స్టాక్ గరిష్ట లోతును అంచనా వేయడానికి కంపైలర్ యొక్క స్టాక్ గైడెన్స్ ఫీచర్ ఉపయోగించబడుతుంది. ఇది ప్రోగ్రామ్ యొక్క కాల్ గ్రాఫ్‌ను నిర్మిస్తుంది మరియు విశ్లేషిస్తుంది, ప్రతి ఫంక్షన్ యొక్క స్టాక్ వినియోగాన్ని నిర్ణయిస్తుంది మరియు ఒక నివేదికను ఉత్పత్తి చేస్తుంది, దీని నుండి ప్రోగ్రామ్ ఉపయోగించే స్టాక్‌ల లోతును ఊహించవచ్చు. ఈ ఫీచర్ -mchp-stack-usage కమాండ్-లైన్ ఎంపిక ద్వారా ప్రారంభించబడింది. అమలు తర్వాత స్టాక్ వినియోగం యొక్క సారాంశం ముద్రించబడుతుంది. మ్యాప్‌లో వివరణాత్మక స్టాక్ నివేదిక అందుబాటులో ఉంది file, ఇది సాధారణ మార్గంలో అభ్యర్థించవచ్చు.
కొత్త పరికర మద్దతు క్రింది AVR భాగాలకు అందుబాటులో ఉంది: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB, , మరియు AVR28DB64. ఉపసంహరించబడిన పరికర మద్దతు మద్దతు క్రింది AVR భాగాలకు అందుబాటులో లేదు: AVR32DA32, AVR48DA16 మరియు, AVR28DA16.
3.7 వెర్షన్ 2.31
ఏదీ లేదు.
3.8 వెర్షన్ 2.30
డేటా ప్రారంభాన్ని నిరోధించడానికి కొత్త ఐచ్ఛికం కొత్త -mno-data-init డ్రైవర్ ఐచ్ఛికం డేటాను ప్రారంభించడాన్ని మరియు bss విభాగాల క్లియరింగ్‌ను నిరోధిస్తుంది. ఇది డూ కాపీ డేటా యొక్క అవుట్‌పుట్‌ను అణచివేయడం ద్వారా మరియు అసెంబ్లీలో స్పష్టమైన bss చిహ్నాలను చేయడం ద్వారా పని చేస్తుంది files, ఇది లింకర్ ద్వారా ఆ రొటీన్‌లను చేర్చడాన్ని నిరోధిస్తుంది.
మెరుగుపరిచిన ఆప్టిమైజేషన్‌లు రిడెండెంట్ రిటర్న్ సూచనల తొలగింపు, స్కిప్-ఇఫ్-బిట్-ఇజ్ సూచనను అనుసరించి కొన్ని జంప్‌ల తొలగింపు మరియు మెరుగైన విధానపరమైన సంగ్రహణ మరియు ఈ ప్రక్రియను పునరావృతం చేయగల సామర్థ్యంతో సహా అనేక ఆప్టిమైజేషన్ మెరుగుదలలు చేయబడ్డాయి. ఈ ఆప్టిమైజేషన్‌లలో కొన్నింటిని నియంత్రించడానికి అదనపు ఎంపికలు ఇప్పుడు అందుబాటులో ఉన్నాయి, ప్రత్యేకంగా -f సెక్షన్-యాంకర్‌లు, ఇది ఒక చిహ్నానికి సంబంధించి స్టాటిక్ ఆబ్జెక్ట్‌లను యాక్సెస్ చేయడానికి అనుమతిస్తుంది; -mpa-iterations=n, ఇది విధానపరమైన సంగ్రహణ పునరావృతాల సంఖ్యను డిఫాల్ట్ 2 నుండి మార్చడానికి అనుమతిస్తుంది; మరియు, -mpa-callcost-shortcall, ఇది మరింత ఉగ్రమైన విధానపరమైన సంగ్రహణను నిర్వహిస్తుంది, లింకర్ సుదీర్ఘ కాల్‌లను విశ్రాంతి తీసుకోగలదనే ఆశతో. అంతర్లీన అంచనాలు గుర్తించబడకపోతే ఈ చివరి ఎంపిక కోడ్ పరిమాణాన్ని పెంచుతుంది.
కింది AVR భాగాలకు కొత్త పరికర మద్దతు అందుబాటులో ఉంది: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, DB64, AVR64DB128, మరియు AVR28DB128. ఉపసంహరించబడిన పరికర మద్దతు మద్దతు క్రింది AVR భాగాలకు ఇకపై అందుబాటులో ఉండదు: ATA32, ATA128, ATA48N, ATA128, ATA64, ATA5272, ATA5790, ATA5790C, ATA5791C, ATA5795Q, ATA6285Q, ATA6286
3.9 వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
హెడర్ file కంపైలర్ బిల్ట్-ఇన్‌ల కోసం కంపైలర్ MISRA వంటి భాషా నిర్దేశాలకు అనుగుణంగా ఉండేలా చూసుకోవడానికి, శీర్షిక file, ఇది స్వయంచాలకంగా చేర్చబడుతుంది , నవీకరించబడింది. ఈ హెడర్‌లో buildin_avr_nop ( ) మరియు buildin avr delay_cycles () వంటి అన్ని అంతర్నిర్మిత ఫంక్షన్‌ల ప్రోటోటైప్‌లు ఉన్నాయి. కొన్ని అంతర్నిర్మితాలు MISRA కంప్లైంట్ కాకపోవచ్చు; కంపైలర్ కమాండ్ లైన్‌కు defineXCSTRICT_MISRA జోడించడం ద్వారా వీటిని విస్మరించవచ్చు. బిల్ట్-ఇన్‌లు మరియు వాటి డిక్లరేషన్‌లు స్థిర-వెడల్పు రకాలను ఉపయోగించడానికి నవీకరించబడ్డాయి.
3.10 వెర్షన్ 2.20
కింది AVR భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATTINY1624, ATTINY1626 మరియు ATTINY1627.
మెరుగైన ఉత్తమ ఫిట్ కేటాయింపు కంపైలర్‌లోని ఉత్తమ ఫిట్ కేటాయింపు (BFA) మెరుగుపరచబడింది, తద్వారా మెరుగైన ఆప్టిమైజేషన్‌ను అనుమతించే క్రమంలో విభాగాలు కేటాయించబడతాయి. BFA ఇప్పుడు పేరు పెట్టబడిన అడ్రస్ స్పేస్‌లకు మద్దతిస్తుంది మరియు డేటా ప్రారంభీకరణను మెరుగ్గా నిర్వహిస్తుంది.
మెరుగైన విధానపరమైన సంగ్రహణ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్లు ఇప్పుడు మరిన్ని కోడ్ సీక్వెన్స్‌లలో నిర్వహించబడతాయి. లింకర్ చెత్త సేకరణ ప్రక్రియ గురించి ఆప్టిమైజేషన్ కోడ్‌కు తెలియజేయడం ద్వారా ఈ ఆప్టిమైజేషన్ కోడ్ పరిమాణాన్ని పెంచే మునుపటి పరిస్థితులు పరిష్కరించబడ్డాయి.
AVR అసెంబ్లర్ లేకపోవడం ఈ పంపిణీతో AVR అసెంబ్లర్ చేర్చబడలేదు.
3.11 వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
3.12 వెర్షన్ 2.10
కోడ్ కవరేజ్ ఈ విడుదలలో కోడ్ కవరేజ్ ఫీచర్‌ని కలిగి ఉంటుంది, ఇది ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్ ఎంత వరకు అమలు చేయబడిందనే విశ్లేషణను సులభతరం చేస్తుంది. దీన్ని ఎనేబుల్ చేయడానికి -mcodecov=ram ఎంపికను ఉపయోగించండి. మీ హార్డ్‌వేర్‌లో ప్రోగ్రామ్‌ని అమలు చేసిన తర్వాత, కోడ్ కవరేజ్ సమాచారం పరికరంలో క్రోడీకరించబడుతుంది మరియు ఇది MPLAB X IDE ద్వారా కోడ్ కవరేజ్ ప్లగ్ఇన్ ద్వారా బదిలీ చేయబడుతుంది మరియు ప్రదర్శించబడుతుంది. ఈ ప్లగ్‌ఇన్‌పై సమాచారం కోసం IDE డాక్యుమెంటేషన్‌ని చూడండి. కవరేజ్ విశ్లేషణ నుండి తదుపరి ఫంక్షన్‌లను మినహాయించడానికి #pragma nocodecov ఉపయోగించబడుతుంది. ఆదర్శవంతంగా వ్యావహారికం ప్రారంభంలో జోడించబడాలి file ఆ మొత్తాన్ని మినహాయించడానికి file కవరేజ్ విశ్లేషణ నుండి. ప్రత్యామ్నాయంగా, కవరేజ్ విశ్లేషణ నుండి నిర్దిష్ట ఫంక్షన్‌ను మినహాయించడానికి _attribute_ ( (nocodecov) ) ఉపయోగించవచ్చు.
పరికర వివరణ fileకొత్త పరికరం file avr_chipinfo అని పిలుస్తారు. html కంపైలర్ పంపిణీ యొక్క డాక్స్ డైరెక్టరీలో ఉంది. ఈ file కంపైలర్ మద్దతు ఇచ్చే అన్ని పరికరాలను జాబితా చేస్తుంది. పరికరం పేరుపై క్లిక్ చేయండి మరియు అది ఆ పరికరానికి అనుమతించదగిన మొత్తం కాన్ఫిగరేషన్ బిట్ సెట్టింగ్/విలువ నొప్పిని చూపే పేజీని తెరుస్తుంది.ampలెస్. విధానపరమైన సంగ్రహణ
అసెంబ్లీ కోడ్ యొక్క సాధారణ బ్లాక్‌లను ఆ బ్లాక్ యొక్క సంగ్రహించిన కాపీకి కాల్‌లతో భర్తీ చేసే ప్రొసీజర్ అబ్‌స్ట్రాక్షన్ ఆప్టిమైజేషన్‌లు కంపైలర్‌కు జోడించబడ్డాయి. ఇవి ఒక ప్రత్యేక అప్లికేషన్ ద్వారా నిర్వహించబడతాయి, ఇది స్థాయి 2, 3 లేదా s ఆప్టిమైజేషన్‌లను ఎంచుకున్నప్పుడు కంపైలర్ ద్వారా స్వయంచాలకంగా అమలు చేయబడుతుంది. ఈ ఆప్టిమైజేషన్‌లు కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, అయితే అవి అమలు వేగం మరియు కోడ్ డీబగబిలిటీని తగ్గించవచ్చు. -mno-pa ఎంపికను ఉపయోగించి విధానపరమైన సంగ్రహణ అధిక ఆప్టిమైజేషన్ స్థాయిలలో నిలిపివేయబడుతుంది లేదా -mpaని ఉపయోగించడం ద్వారా తక్కువ ఆప్టిమైజేషన్ స్థాయిలలో (మీ లైసెన్స్‌కు లోబడి) ప్రారంభించబడుతుంది. ఇది ఒక వస్తువు కోసం నిలిపివేయబడుతుంది file -mno-pa-on-ని ఉపయోగించడంfile=file-mno-pa-on-function=function ఉపయోగించి ఒక ఫంక్షన్‌కు పేరు, లేదా నిలిపివేయబడింది. మీ సోర్స్ కోడ్ లోపల, ఫంక్షన్ యొక్క నిర్వచనంతో లక్షణం ( (nopa) )ని ఉపయోగించడం ద్వారా లేదా ఆట్రిబ్యూట్ ( (nopa, noinline) )కి విస్తరించే nopaని ఉపయోగించడం ద్వారా విధానపరమైన సంగ్రహణను నిలిపివేయవచ్చు మరియు తద్వారా ఫంక్షన్ ఇన్‌లైనింగ్ జరగకుండా నిరోధిస్తుంది. మరియు ఇన్లైన్ కోడ్ యొక్క సంగ్రహణ ఉంది.
ప్రాగ్మాలో లాక్ బిట్ మద్దతు AVR లాక్ బిట్‌లను అలాగే ఇతర కాన్ఫిగరేషన్ బిట్‌లను పేర్కొనడానికి #pragma config ఇప్పుడు ఉపయోగించబడుతుంది. avr_chipinfoని తనిఖీ చేయండి. html file (పైన పేర్కొన్నది) సెట్టింగు/విలువ జంటలు ఈ వ్యావహారికంతో ఉపయోగించడానికి. కింది భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: AVR28DAl28, AVR64DAl28, AVR32DA 128 మరియు AVR48DA 128.
3.13 వెర్షన్ 2.05
మీ బక్ కోసం మరిన్ని బిట్‌లు ఈ కంపైలర్ మరియు లైసెన్స్ మేనేజర్ యొక్క macOS వెర్షన్ ఇప్పుడు 64-బిట్ అప్లికేషన్. MacOS యొక్క ఇటీవలి సంస్కరణల్లో హెచ్చరికలు లేకుండా కంపైలర్ ఇన్‌స్టాల్ చేయబడుతుందని మరియు రన్ అవుతుందని ఇది నిర్ధారిస్తుంది.
ప్రోగ్రామ్ మెమరీలో కాన్స్ట్ ఆబ్జెక్ట్‌లు కంపైలర్ ఇప్పుడు కాన్‌స్ట్-క్వాలిఫైడ్ ఆబ్జెక్ట్‌లను ప్రోగ్రామ్ ఫ్లాష్ మెమరీలో ఉంచవచ్చు, వీటిని RAMలో ఉంచడం కంటే. కంపైలర్ సవరించబడింది, కాన్స్ t-క్వాలిఫైడ్ గ్లోబల్ డేటా ప్రోగ్రామ్ ఫ్లాష్ మెమరీలో నిల్వ చేయబడుతుంది మరియు ఈ డేటాను తగిన ప్రోగ్రామ్-మెమరీ సూచనలను ఉపయోగించి ప్రత్యక్షంగా మరియు పరోక్షంగా యాక్సెస్ చేయవచ్చు. ఈ కొత్త ఫీచర్ డిఫాల్ట్‌గా ప్రారంభించబడింది కానీ -mno-const-data-in-progmem ఎంపికను ఉపయోగించి నిలిపివేయవచ్చు. avrxmega3 మరియు avrtiny ఆర్కిటెక్చర్‌ల కోసం, ఈ ఫీచర్ అవసరం లేదు మరియు ఈ పరికరాల కోసం డేటా అడ్రస్ స్పేస్‌లో ప్రోగ్రామ్ మెమరీ మ్యాప్ చేయబడినందున, ఇది ఎల్లప్పుడూ నిలిపివేయబడుతుంది.
ఈ కంపైలర్ యొక్క ఉచిత లైసెన్స్ లేని (ఉచిత) వెర్షన్‌లు ఇప్పుడు స్థాయి 2 వరకు మరియు దానితో సహా ఆప్టిమైజేషన్‌లను అనుమతిస్తాయి. ఇది ప్రామాణిక లైసెన్స్‌ని ఉపయోగించి గతంలో సాధ్యమయ్యే అవుట్‌పుట్‌కు సారూప్యమైన, ఒకేలా కానప్పటికీ, అవుట్‌పుట్‌ను అనుమతిస్తుంది.
AVRASM2కి స్వాగతం 2-బిట్ పరికరాల కోసం AVRASM8 అసెంబ్లర్ ఇప్పుడు XC8 కంపైలర్ ఇన్‌స్టాలర్‌లో చేర్చబడింది. ఈ అసెంబ్లర్ XC8 కంపైలర్ ద్వారా ఉపయోగించబడదు, కానీ చేతితో వ్రాసిన అసెంబ్లీ మూలం ఆధారంగా ప్రాజెక్ట్‌లకు అందుబాటులో ఉంది.
కింది భాగాలకు కొత్త పరికర మద్దతు మద్దతు అందుబాటులో ఉంది: ATMEGA1608, ATMEGA1609, ATMEGA808 మరియు ATMEGA809.

3.14 వెర్షన్ 2.00
అగ్ర-స్థాయి డ్రైవర్ xc8-cc అని పిలువబడే ఒక కొత్త డ్రైవర్, ఇప్పుడు మునుపటి avr-gcc డ్రైవర్ మరియు xc8 డ్రైవర్‌కు పైన ఉంది మరియు ఇది లక్ష్య పరికరం ఎంపిక ఆధారంగా తగిన కంపైలర్‌కు కాల్ చేయవచ్చు. ఈ డ్రైవర్ GCC-శైలి ఎంపికలను అంగీకరిస్తుంది, అవి అమలు చేయబడే కంపైలర్‌కు అనువదించబడతాయి లేదా పంపబడతాయి. ఈ డ్రైవర్ ఏదైనా AVR లేదా PIC లక్ష్యంతో ఒకే విధమైన సెమాంటిక్స్‌తో ఒకే విధమైన ఎంపికల సెట్‌ను ఉపయోగించడానికి అనుమతిస్తుంది మరియు ఇది కంపైలర్‌ను అమలు చేయడానికి సిఫార్సు చేయబడిన మార్గం. అవసరమైతే, పాత avr-gcc డ్రైవర్‌ను మునుపటి కంపైలర్ సంస్కరణల్లో ఆమోదించిన పాత-శైలి ఎంపికలను ఉపయోగించి నేరుగా కాల్ చేయవచ్చు.
కామన్ సి ఇంటర్‌ఫేస్ ఈ కంపైలర్ ఇప్పుడు MPLAB కామన్ సి ఇంటర్‌ఫేస్‌కు అనుగుణంగా ఉంటుంది, సోర్స్ కోడ్‌ను అన్ని MPLAB XC కంపైలర్‌లలో సులభంగా పోర్ట్ చేయడానికి అనుమతిస్తుంది. -mext=cci ఐచ్ఛికం ఈ లక్షణాన్ని అభ్యర్థిస్తుంది, అనేక భాషా పొడిగింపుల కోసం ప్రత్యామ్నాయ సింటాక్స్‌ను ప్రారంభిస్తుంది.
కొత్త లైబ్రేరియన్ డ్రైవర్ మునుపటి PIC లైబ్రేరియన్ మరియు AVR avr-ar లైబ్రేరియన్ పైన కొత్త లైబ్రేరియన్ డ్రైవర్ ఉంచబడ్డాడు. ఈ డ్రైవర్ GCC-ఆర్కైవర్-శైలి ఎంపికలను అంగీకరిస్తుంది, అవి అమలు చేయబడే లైబ్రేరియన్ కోసం అనువదించబడతాయి లేదా పంపబడతాయి. కొత్త డ్రైవర్ ఏదైనా PIC లేదా AVR లైబ్రరీని సృష్టించడానికి లేదా మార్చడానికి ఒకే విధమైన సెమాంటిక్స్‌తో ఒకే విధమైన ఎంపికలను అనుమతిస్తుంది. file అందువలన లైబ్రేరియన్‌ను పిలవడానికి సిఫార్సు చేయబడిన మార్గం. లెగసీ ప్రాజెక్ట్‌ల కోసం అవసరమైతే, మునుపటి కంపైలర్ వెర్షన్‌లలో ఆమోదించిన పాత-శైలి ఎంపికలను ఉపయోగించి మునుపటి లైబ్రేరియన్‌ను నేరుగా కాల్ చేయవచ్చు.

వలస సమస్యలు

కిందివి ఇప్పుడు కంపైలర్ ద్వారా విభిన్నంగా నిర్వహించబడుతున్న లక్షణాలు. ఈ కంపైలర్ వెర్షన్‌కి కోడ్‌ని పోర్ట్ చేస్తే, ఈ మార్పులకు మీ సోర్స్ కోడ్‌కి సవరణ అవసరం కావచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య అనుసరించే మార్పులకు మద్దతు ఇవ్వడానికి మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది.

4.1 వెర్షన్ 2.41
సరికాని fma ఫంక్షన్‌లు తీసివేయబడ్డాయి (XC8-2913) C99 స్టాండర్డ్ లైబ్రరీ fma 0 -ఫ్యామిలీ ఫంక్షన్‌లు ( ) ఒకే రౌండింగ్‌కు అనంతమైన ఖచ్చితత్వంతో గుణకారం-జోడించడాన్ని గణించలేదు, బదులుగా ప్రతి ఆపరేషన్‌తో రౌండింగ్ ఎర్రర్‌లు పేరుకుపోయాయి. ఈ విధులు సరఫరా చేయబడిన లైబ్రరీ నుండి తీసివేయబడ్డాయి.
4.2 వెర్షన్ 2.40
ఏదీ లేదు.
4.3 వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
4.4 వెర్షన్ 2.36 ఏదీ లేదు.
4.5 వెర్షన్ 2.35
స్ట్రింగ్-టు బేస్‌ల నిర్వహణ (XC8-2420) ఇతర XC కంపైలర్‌లతో అనుగుణ్యతను నిర్ధారించడానికి, strtol () మొదలైన XC8 స్ట్రింగ్-టు ఫంక్షన్‌లు, పేర్కొన్న బేస్ 36 కంటే పెద్దది అయినట్లయితే, ఇన్‌పుట్ స్ట్రింగ్‌ను మార్చడానికి ప్రయత్నించదు. మరియు బదులుగా EINVALకి దోషాన్ని సెట్ చేస్తుంది. C ప్రమాణం ఈ మూల విలువను అధిగమించినప్పుడు ఫంక్షన్‌ల ప్రవర్తనను పేర్కొనదు.
తగని స్పీడ్ ఆప్టిమైజేషన్‌లు స్థాయి 3 ఆప్టిమైజేషన్‌లను (-03) ఎంచుకునేటప్పుడు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్‌లు ప్రారంభించబడ్డాయి. ఈ ఆప్టిమైజేషన్‌లు కోడ్ వేగం కారణంగా కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, కాబట్టి అమలు చేయకూడదు. ఈ ఆప్టిమైజేషన్ స్థాయిని ఉపయోగించే ప్రాజెక్ట్‌లు ఈ విడుదలతో నిర్మించబడినప్పుడు కోడ్ పరిమాణం మరియు అమలు వేగంలో తేడాలను చూడవచ్చు.
లైబ్రరీ కార్యాచరణ అనేక ప్రామాణిక C లైబ్రరీ ఫంక్షన్‌ల కోడ్ ఇప్పుడు మైక్రోచిప్ యొక్క యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ నుండి వచ్చింది, ఇది మునుపటి avr-libc లైబ్రరీ అందించిన దానితో పోలిస్తే కొన్ని పరిస్థితులలో భిన్నమైన ప్రవర్తనను ప్రదర్శిస్తుంది. ఉదాహరణకుample, ఫార్మాట్ చేయడాన్ని ఆన్ చేయడానికి 1printf flt లైబ్రరీ (-1printf_flt ఎంపిక)లో లింక్ చేయవలసిన అవసరం లేదు I0 ఫ్లోట్-ఫార్మాట్ స్పెసిఫైయర్‌లకు మద్దతు. తెలివైన I0 మైక్రోచిప్ యూనిఫైడ్ స్టాండర్డ్ లైబ్రరీ ఫీచర్లు ఈ ఎంపికను అనవసరంగా చేస్తాయి. అదనంగా, ఫ్లాష్‌లో కాన్స్ట్ స్ట్రింగ్‌లపై పనిచేసే స్ట్రింగ్ మరియు మెమరీ ఫంక్షన్‌ల కోసం (ఉదా strcpy_P ( ) మొదలైనవి..) _P ప్రత్యయ రొటీన్‌ల ఉపయోగం ఇకపై అవసరం లేదు. const-data-in-program-memory ఫీచర్ ప్రారంభించబడినప్పుడు ప్రామాణిక C రొటీన్‌లు (ఉదా strcpy ) అటువంటి డేటాతో సరిగ్గా పని చేస్తాయి.

4.6 వెర్షన్ 2.32
ఏదీ లేదు.
4.7 వెర్షన్ 2.31
ఏదీ లేదు.
4.8 వెర్షన్ 2.30
ఏదీ లేదు.
4.1 వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
4.2 వెర్షన్ 2.20
DFP లేఅవుట్ మార్చబడింది కంపైలర్ ఇప్పుడు DFPలు (డివైస్ ఫ్యామిలీ ప్యాక్‌లు) ఉపయోగించే వేరే లేఅవుట్‌ని ఊహిస్తుంది. పాత DFP ఈ విడుదలతో పని చేయకపోవచ్చు మరియు పాత కంపైలర్‌లు తాజా DFPలను ఉపయోగించలేరని దీని అర్థం.
4.3 వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
4.4 వెర్షన్ 2.10
ఏదీ లేదు
4.5 వెర్షన్ 2.05
ప్రోగ్రామ్ మెమరీలో కాన్స్ట్ ఆబ్జెక్ట్‌లు డిఫాల్ట్‌గా, కాన్స్ట్-క్వాలిఫైడ్ ఆబ్జెక్ట్‌లు ప్రోగ్రామ్ మెమరీలో ఉంచబడతాయి మరియు యాక్సెస్ చేయబడతాయి (వర్ణించిన రంగు ప్రకారం). ఇది మీ ప్రాజెక్ట్ యొక్క పరిమాణం మరియు అమలు వేగాన్ని ప్రభావితం చేస్తుంది, అయితే RAM వినియోగాన్ని తగ్గించాలి. అవసరమైతే -mnoconst-data-in-progmem ఎంపికను ఉపయోగించి ఈ లక్షణాన్ని నిలిపివేయవచ్చు.
4.6 వెర్షన్ 2.00
కాన్ఫిగరేషన్ ఫ్యూజ్‌లు పరికర కాన్ఫిగరేషన్ ఫ్యూజ్‌లు ఇప్పుడు కాన్ఫిగరేషన్ ప్రాగ్మాను ఉపయోగించి ప్రోగ్రామ్ చేయబడతాయి, దీని తర్వాత ఫ్యూజ్ స్థితిని పేర్కొనడానికి సెట్-వాల్యూ జతలను ఏర్పాటు చేయవచ్చు, ఉదా.
#pragma config WDTON = సెట్
#pragma config BODLEVEL = BODLEVEL_4V3
సంపూర్ణ వస్తువులు మరియు విధులు వస్తువులు మరియు విధులు ఇప్పుడు CCI (చిరునామా) స్పెసిఫైయర్ ఉపయోగించి మెమరీలో నిర్దిష్ట చిరునామాలో ఉంచబడతాయి, ఉదాహరణకుampలే:
#చేర్చండి
int foobar_at(0x800100);
చార్ __at(0x250) getID(int ఆఫ్‌సెట్) {…}
ఈ స్పెసిఫైయర్‌కు వాదన తప్పనిసరిగా ఉండాలి మొదటి బైట్ లేదా సూచన ఉంచబడే చిరునామాను సూచించే స్థిరాంకం. RAM చిరునామాలు 0x800000 ఆఫ్‌సెట్‌ని ఉపయోగించడం ద్వారా సూచించబడతాయి. ఈ లక్షణాన్ని ఉపయోగించడానికి CCIని ప్రారంభించండి.
కొత్త అంతరాయ ఫంక్షన్ సింటాక్స్ C ఫంక్షన్‌లు అంతరాయ హ్యాండ్లర్లు అని సూచించడానికి కంపైలర్ ఇప్పుడు CCI _interrupt (num) స్పెసిఫైయర్‌ని అంగీకరిస్తుంది. స్పెసిఫైయర్ అంతరాయ సంఖ్యను తీసుకుంటుంది, ఉదాహరణకుampలే:
#చేర్చండి
శూన్యం __interrupt(SPI_STC_vect_num) spi_Isr(శూన్యం) { …}

స్థిర సమస్యలు

కిందివి కంపైలర్‌కు చేసిన దిద్దుబాట్లు. ఇవి రూపొందించబడిన కోడ్‌లోని బగ్‌లను సరిచేయవచ్చు లేదా కంపైలర్ యొక్క ఆపరేషన్‌ను వినియోగదారు గైడ్ ఉద్దేశించిన లేదా పేర్కొన్న దానికి మార్చవచ్చు. ఉపశీర్షికలలోని సంస్కరణ సంఖ్య, అనుసరించే సమస్యలకు పరిష్కారాలను కలిగి ఉన్న మొదటి కంపైలర్ సంస్కరణను సూచిస్తుంది. శీర్షికలో బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్‌లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్‌ని సంప్రదించవలసి వస్తే ఇవి ఉపయోగకరంగా ఉండవచ్చు.
పరికరంతో అనుబంధించబడిన పరికర కుటుంబ ప్యాక్ (DFP)లో కొన్ని పరికర-నిర్దిష్ట సమస్యలు సరిచేయబడ్డాయని గమనించండి. DFPలకు చేసిన మార్పుల సమాచారం కోసం మరియు తాజా ప్యాక్‌లను డౌన్‌లోడ్ చేయడానికి MPLAB ప్యాక్ మేనేజర్‌ని చూడండి.

5.1 వెర్షన్ 2.41
వెంచురా (XC8-3088) డాంగిల్‌లపై డాంగిల్ సమస్యలు కంపైలర్‌ను లైసెన్స్ చేయడానికి ఉపయోగించబడింది, macOS Ventura హోస్ట్‌లలో సరిగ్గా చదవబడకపోవచ్చు, ఫలితంగా లైసెన్సింగ్ వైఫల్యాలు ఏర్పడతాయి. XCLM లైసెన్స్ మేనేజర్‌కి మార్పులు ఈ సమస్యను సరి చేస్తాయి.
మెమరీ కేటాయింపు యొక్క తప్పు సూచన (XC8-2925) ప్రామాణిక లైబ్రరీ మెమరీ మేనేజ్‌మెంట్ ఫంక్షన్‌లను (malloc () et al) ఉపయోగించి మెమరీ యొక్క SIZE_MAX బైట్‌లను (లేదా దీనికి దగ్గరగా ఉన్న విలువ) కేటాయించే ప్రయత్నం తప్పుగా విఫలమైంది. సాధారణ డైనమిక్ మెమరీ కేటాయింపు అమలును ఉపయోగిస్తున్నప్పుడు అభ్యర్థించిన బ్లాక్‌కు అదనంగా అదనపు బైట్‌లు అవసరమని ఇది పరిగణనలోకి తీసుకోలేదు. NULL పాయింటర్ ఇప్పుడు తిరిగి ఇవ్వబడుతుంది మరియు అటువంటి పరిస్థితుల్లో ENOMEMకి తప్పుగా సెట్ చేయబడుతుంది.
సరికాని fma ఫంక్షన్‌లు తీసివేయబడ్డాయి (XC8-2913) C99 ప్రామాణిక లైబ్రరీ fma ( ) -కుటుంబ విధులు ( ) ఒకే రౌండింగ్‌కు అనంతమైన ఖచ్చితత్వంతో గుణకారం-జోడించడాన్ని గణించలేదు, బదులుగా ప్రతి ఆపరేషన్‌తో రౌండింగ్ ఎర్రర్‌లను సేకరించింది. ఈ విధులు సరఫరా చేయబడిన లైబ్రరీ నుండి తీసివేయబడ్డాయి.
స్ట్రింగ్ మార్పిడి యొక్క తప్పు నిర్వహణ (XC8-2921, XC8-2652) strtod Cr ద్వారా మార్పిడి కోసం ఒక 'సబ్జెక్ట్ సీక్వెన్స్' ఘాతాంక ఆకృతిలో ఫ్లోటింగ్-పాయింట్ నంబర్‌గా కనిపించినప్పుడు మరియు e/E అక్షరం తర్వాత ఊహించని అక్షరం ఉన్నప్పుడు, endptr అందించబడిన చోట, దానికి చిరునామా కేటాయించబడింది అది e/E తర్వాత అక్షరాన్ని సూచించింది, అయితే అది మార్చబడనందున అది e/E క్యారెక్టర్‌ని సూచిస్తూ ఉండాలి. ఉదాహరణకుample, strtod (“100exx”, &ep) 100.00ని తిరిగి ఇవ్వాలి మరియు స్ట్రింగ్‌లోని “exx” భాగానికి పాయింట్‌గా epని సెట్ చేయాలి, అయితే ఫంక్షన్ సరైన విలువను తిరిగి ఇస్తుంది కానీ స్ట్రింగ్‌లోని “xx” భాగానికి epని సెట్ చేస్తుంది .

5.2 వెర్షన్ 2.40
చాలా రిలాక్స్డ్ (XCS-2876) -mrelax ఎంపికను ఉపయోగిస్తున్నప్పుడు, కంపైలర్ కొన్ని విభాగాలను కలిపి కేటాయించడం లేదు, ఫలితంగా తక్కువ సరైన కోడ్ పరిమాణాలు ఉంటాయి. ఇది కొత్త MUSL లైబ్రరీలను ఉపయోగించిన కోడ్‌తో లేదా బలహీనమైన చిహ్నాలతో సంభవించి ఉండవచ్చు.
హెచ్చరికలో పేర్కొన్న విధంగా మ్యాపింగ్ ఫీచర్ నిలిపివేయబడలేదు (XC8-2875) const-data-in-config-mappedprogmem ఫీచర్ ఎనేబుల్ చేయబడిన const-data-in-progmem ఫీచర్‌పై ఆధారపడి ఉంటుంది. ఎంపికను ఉపయోగించి const-data-inconfig-mapped-progmem ఫీచర్ స్పష్టంగా ప్రారంభించబడితే మరియు const-data-inprogmem ఫీచర్ నిలిపివేయబడితే, const-data-in-con fig- అని పేర్కొంటూ హెచ్చరిక సందేశం ఉన్నప్పటికీ, లింక్ దశ విఫలమైంది. mapped-progmem ఫీచర్ స్వయంచాలకంగా నిలిపివేయబడింది, ఇది పూర్తిగా సరైనది కాదు. ఈ పరిస్థితిలో const-data-in-config-mapped-progmem ఫీచర్ ఇప్పుడు పూర్తిగా నిలిపివేయబడింది.
NVMCTRL (XC8-2848)ని సరిగ్గా యాక్సెస్ చేయడానికి DFP మార్పులు AVR64EA పరికరాలు ఉపయోగించే రన్‌టైమ్ స్టార్టప్ కోడ్ NVMCTRL రిజిస్టర్ కాన్ఫిగరేషన్ చేంజ్ ప్రొటెక్షన్ (CCP) కింద ఉందని మరియు const-data-in-configmapped-progmem ఉపయోగించే పేజీకి I0 SFRని సెట్ చేయలేకపోయిందని పరిగణనలోకి తీసుకోలేదు. కంపైలర్ ఫీచర్. AVR-Ex_DFP వెర్షన్ 2.2.55లో చేసిన మార్పులు ఈ రిజిస్టర్‌కి సరిగ్గా వ్రాయడానికి రన్‌టైమ్ స్టార్టప్ కోడ్‌ని అనుమతిస్తుంది.
నివారించేందుకు DFP మార్పులు ఫ్లాష్ మ్యాపింగ్ (XC8-2847) AVR128DA28/32/48/64 Silicon Errata (D580000882)లో నివేదించబడిన ఫ్లాష్-మ్యాపింగ్ పరికర ఫీచర్‌తో సమస్య కోసం ఒక పని అమలు చేయబడింది. const-data-in-config-mapped-progmem కంపైలర్ ఫీచర్ ప్రభావిత పరికరాలకు డిఫాల్ట్‌గా వర్తించదు మరియు ఈ మార్పు AVR-Dx_DFP వెర్షన్ 2.2.160లో కనిపిస్తుంది.
sinhf లేదా coshf (XC8-2834)తో బిల్డ్ ఎర్రర్ sinhf () లేదా coshf () లైబ్రరీ ఫంక్షన్‌లను ఉపయోగించడానికి చేసిన ప్రయత్నాలు నిర్వచించబడని సూచనను వివరించే లింక్ ఎర్రర్‌కు దారితీశాయి. సూచించిన తప్పిపోయిన ఫంక్షన్ ఇప్పుడు కంపైలర్ పంపిణీలో చేర్చబడింది.
నోపా (XC,8-2833)తో ఎర్రర్‌లను రూపొందించండి asm ( )ని ఉపయోగించి అసెంబ్లర్ పేరు పేర్కొనబడిన ఫంక్షన్‌తో నోపా లక్షణాన్ని ఉపయోగించడం అసెంబ్లర్ నుండి దోష సందేశాలను ప్రేరేపించింది. ఈ కలయిక సాధ్యం కాదు.
పాయింటర్ ఆర్గ్యుమెంట్‌లతో విభిన్న ఫంక్షన్ వైఫల్యం (XC8-2755, XC8-2731) కాన్స్ట్-డేటా-ఇన్-ప్రోగ్మెమ్ ఫీచర్ ప్రారంభించబడినప్పుడు వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్‌లో 24-బిట్ (మెమ్ఎక్స్ రకం) పాయింటర్‌లు పాస్ అవుతాయని వేరియబుల్ నంబర్ ఆర్గ్యుమెంట్‌లతో ఫంక్షన్‌లు ఆశించాయి. డేటా మెమరీకి పాయింటర్లుగా ఉన్న ఆర్గ్యుమెంట్‌లు 16-బిట్ ఆబ్జెక్ట్‌లుగా పాస్ చేయబడుతున్నాయి, చివరికి అవి చదవబడినప్పుడు కోడ్ వైఫల్యానికి కారణమవుతుంది. constdata-in-progmem ఫీచర్ ప్రారంభించబడినప్పుడు, అన్ని 16-బిట్ పాయింటర్ ఆర్గ్యుమెంట్‌లు ఇప్పుడు 24-బిట్ పాయింటర్‌లుగా మార్చబడతాయి.
strtoxxx లైబ్రరీ విధులు విఫలమవుతున్నాయి (XC8-2620) const-data-in-progmem ఫీచర్ ప్రారంభించబడినప్పుడు, ప్రోగ్రామ్ మెమరీలో లేని సోర్స్ స్ట్రింగ్ ఆర్గ్యుమెంట్‌ల కోసం strtoxxx లైబ్రరీ ఫంక్షన్‌లలోని endptr పరామితి సరిగ్గా నవీకరించబడలేదు.
చెల్లని కాస్ట్‌ల కోసం హెచ్చరికలు (XC8-2612) const-in-progmem ఫీచర్ ఎనేబుల్ చేయబడి ఉంటే కంపైలర్ ఇప్పుడు ఎర్రర్‌ను జారీ చేస్తుంది మరియు స్ట్రింగ్ లిటరల్ అడ్రస్ స్పష్టంగా డేటా అడ్రస్ స్పేస్‌కు ప్రసారం చేయబడితే (const క్వాలిఫైయర్‌ను డ్రాప్ చేయడం), ఉదాహరణకుample, (uint 8_t *) “హలో వరల్డ్!”. కాన్స్ట్ డేటా పాయింటర్ డేటా అడ్రస్ స్పేస్‌కు స్పష్టంగా ప్రసారం చేయబడినప్పుడు చిరునామా చెల్లుబాటు కాకపోతే హెచ్చరిక సమస్య.
ప్రారంభించబడని కాన్స్ట్ ఆబ్జెక్ట్‌ల ప్లేస్‌మెంట్ (XC8-2408) డేటా అడ్రస్ స్పేస్‌లో తమ ప్రోగ్రామ్ మెమరీ మొత్తం లేదా కొంత భాగాన్ని మ్యాప్ చేసే పరికరాలలో ప్రారంభించని కాన్స్ట్ మరియు కాన్స్ట్ అస్థిర వస్తువులు ప్రోగ్రామ్ మెమరీలో ఉంచబడవు. ఈ పరికరాల కోసం, అటువంటి వస్తువులు ఇప్పుడు ప్రోగ్రామ్ మెమరీలో ఉంచబడ్డాయి, వాటి ఆపరేషన్ ఇతర పరికరాలకు అనుగుణంగా ఉంటుంది.

5.3 వెర్షన్ 2.39 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
5.4 వెర్షన్ 2.36
ఆలస్యం చేస్తున్నప్పుడు లోపం (XC8-2774) డిఫాల్ట్ ఫ్రీ మోడ్ ఆప్టిమైజేషన్‌లలో చిన్న మార్పులు ఆపరాండ్ ఎక్స్‌ప్రెషన్‌లను ఆలస్యం అంతర్నిర్మిత ఫంక్షన్‌లకు స్థిరంగా మడతపెట్టకుండా నిరోధించాయి, ఫలితంగా అవి స్థిరం కానివిగా పరిగణించబడతాయి మరియు లోపాన్ని ప్రేరేపిస్తాయి: buildin avr delay_cycles కంపైల్ టైమ్ పూర్ణాంక స్థిరాంకాన్ని ఆశిస్తుంది.
5.5 వెర్షన్ 2.35
_at (XC8-2653)ని ఉపయోగించి నిరంతర కేటాయింపు ఒకే పేరుతో మరియు _at ( )ని ఉపయోగించి విభాగంలోని బహుళ ఆబ్జెక్ట్‌ల స్థలాల వరుస కేటాయింపు సరిగ్గా పని చేయలేదు. ఉదాహరణకుampలే:
const char arr1[] __attribute__((section(“.mysec”))) __at (0x500) = {0xAB, 0xCD};
const char arr2[] __attribute__((విభాగం(“.mysec”))) = {0xEF, 0xFE};
arr2 తర్వాత వెంటనే arr1ని ఉంచాలి.
విభాగం ప్రారంభ చిరునామాలను పేర్కొంటోంది (XC8-2650) ది -W1, –సెక్షన్-ప్రారంభ ఎంపిక సెక్షన్‌లను నామినేటెడ్ ప్రారంభ చిరునామాలో ఉంచడంలో నిశ్శబ్దంగా విఫలమైంది. ఏదైనా అనుకూల-పేరు ఉన్న విభాగాల కోసం ఈ సమస్య పరిష్కరించబడింది; అయితే, ఇది వంటి ఏ ప్రామాణిక విభాగాలకు పని చేయదు. వచనం లేదా . bss, ఇది తప్పనిసరిగా -W1, -T ఎంపికను ఉపయోగించి ఉంచాలి.
విశ్రాంతి తీసుకునేటప్పుడు లింకర్ క్రాష్ అవుతుంది (XC8-2647) -mrelax ఆప్టిమైజేషన్ ప్రారంభించబడినప్పుడు మరియు అందుబాటులో ఉన్న మెమరీకి సరిపోని కోడ్ లేదా డేటా విభాగాలు ఉన్నప్పుడు, లింకర్ క్రాష్ అవుతుంది. ఇప్పుడు, అటువంటి పరిస్థితిలో, బదులుగా దోష సందేశాలు జారీ చేయబడ్డాయి.

నో-ఫాలింగ్-బ్యాక్ (XC8-2646) ది -nofallback ఎంపిక సరిగ్గా అమలు చేయబడలేదు లేదా డాక్యుమెంట్ చేయబడలేదు. కంపైలర్ లైసెన్స్ లేనిది అయితే కంపైలర్ తక్కువ ఆప్టిమైజేషన్ సెట్టింగ్‌కు తిరిగి రాదని మరియు బదులుగా లోపాన్ని జారీ చేస్తుందని నిర్ధారించడానికి ఇప్పుడు దీనిని ఎంచుకోవచ్చు.

తగని స్పీడ్ ఆప్టిమైజేషన్‌లు (X03-2637) స్థాయి 3 ఆప్టిమైజేషన్‌లను (-03) ఎంచుకునేటప్పుడు విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్‌లు ప్రారంభించబడ్డాయి. ఈ ఆప్టిమైజేషన్‌లు కోడ్ వేగం కారణంగా కోడ్ పరిమాణాన్ని తగ్గిస్తాయి, కాబట్టి అమలు చేయకూడదు.
చెడ్డ EEPROM యాక్సెస్ (XC8-2629) ది -mconst-data-in-progmem ఎంపిక ప్రారంభించబడినప్పుడు Xmega పరికరాల్లో eeprom_read_block రొటీన్ సరిగ్గా పని చేయలేదు (ఇది డిఫాల్ట్ స్థితి), ఫలితంగా EEPROM మెమరీ సరిగ్గా చదవబడదు.
చెల్లని మెమరీ కేటాయింపు (XC8-2593, XC8-2651) ఎప్పుడు -Ttext లేదా -Tdata లింకర్ ఎంపిక (ఉదాamp-vl డ్రైవర్ ఎంపికను ఉపయోగించి le పాస్ చేయబడింది) పేర్కొనబడింది, సంబంధిత టెక్స్ట్/డేటా రీజియన్ మూలం నవీకరించబడింది; అయినప్పటికీ, ముగింపు చిరునామా తదనుగుణంగా సర్దుబాటు చేయబడలేదు, ఇది లక్ష్యం పరికరం యొక్క మెమరీ పరిధిని అధిగమించడానికి దారితీసింది.
ఓవర్-ఆట్రిబ్యూటెడ్ ఫంక్షన్‌తో క్రాష్ (XC8-2580) అంతరాయాలు, సిగ్నల్ లేదా nmi లక్షణాలలో ఒకటి కంటే ఎక్కువ ఉపయోగించి ఫంక్షన్ ప్రకటించబడితే కంపైలర్ క్రాష్ అవుతుంది, ఉదా, లక్షణం ( ( సిగ్నల్ , అంతరాయ ) ).
చెల్లని ATtiny అంతరాయ కోడ్ (XC8-2465) ATtiny పరికరాల కోసం బిల్డింగ్ చేసినప్పుడు మరియు ఆప్టిమైజేషన్‌లు డిసేబుల్ చేయబడినప్పుడు (-00), అంతరాయ ఫంక్షన్‌లు అసెంబ్లర్ మెసేజ్‌ల పరిధి వెలుపల operandని ప్రేరేపించి ఉండవచ్చు.
ఎంపికలు ఆమోదించబడలేదు (XC8-2452) బహుళ, కామాతో వేరు చేయబడిన లింకర్ ఎంపికలతో ఎంపికను ఉపయోగిస్తున్నప్పుడు, లింకర్ ఎంపికలన్నీ లింకర్‌కు పంపబడవు.
ప్రోగ్రామ్ మెమరీని పరోక్షంగా చదవడంలో లోపం (X03-2450) కొన్ని సందర్భాల్లో, పాయింటర్ నుండి ప్రోగ్రామ్ మెమరీకి రెండు బైట్ విలువను చదివేటప్పుడు కంపైలర్ అంతర్గత లోపాన్ని (గుర్తించలేని insn) సృష్టించింది.
5.6 వెర్షన్ 2.32
యొక్క రెండవ యాక్సెస్ లైబ్రరీ విఫలమైంది (XC8-2381) xc8-ar యొక్క Windows వెర్షన్‌ను ప్రారంభించడం. .exe లైబ్రరీ ఆర్కైవర్ ఇప్పటికే ఉన్న లైబ్రరీ ఆర్కైవ్‌ను రెండవసారి యాక్సెస్ చేయడంలో లోపం సందేశం పేరు మార్చడం సాధ్యం కాకపోవడంతో విఫలమై ఉండవచ్చు.
5.7 వెర్షన్ 2.31
వివరించలేని కంపైలర్ వైఫల్యాలు (XC8-2367) విండోస్ ప్లాట్‌ఫారమ్‌లపై నడుస్తున్నప్పుడు సిస్టమ్ తాత్కాలిక డైరెక్టరీని డాట్‌తో కూడిన పాత్‌కు సెట్ చేసిన '.' అక్షరం, కంపైలర్ అమలు చేయడంలో విఫలమై ఉండవచ్చు.
5.8 వెర్షన్ 2.30
అవుట్‌లైన్ చేసిన తర్వాత గ్లోబల్ లేబుల్‌లు తప్పుగా ఉన్నాయి (XC8-2299) విధానపరమైన సంగ్రహణ ద్వారా కారకం చేయబడిన అసెంబ్లీ సీక్వెన్స్‌లలో గ్లోబల్ లేబుల్‌లను ఉంచే చేతితో వ్రాసిన అసెంబ్లీ కోడ్ సరిగ్గా రీపోజిషన్ చేయబడి ఉండకపోవచ్చు.
రిలాక్సింగ్ క్రాష్ (XC8-2287) -mrelax ఎంపికను ఉపయోగించడం వలన టెయిల్ జంప్ రిలాక్సేషన్ ఆప్టిమైజేషన్‌లు విభాగం చివరిలో లేని రెట్ ఇన్‌స్ట్రక్షన్‌ను తీసివేయడానికి ప్రయత్నించినప్పుడు లింకర్ క్రాష్ అయ్యి ఉండవచ్చు.
లేబుల్‌లను విలువలుగా ఆప్టిమైజ్ చేస్తున్నప్పుడు క్రాష్ అవుతుంది (XC8-2282) "విలువలుగా లేబుల్‌లు" GNU C భాషా పొడిగింపును ఉపయోగించే కోడ్ విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్‌లను క్రాష్ చేయడానికి కారణమై ఉండవచ్చు, అవుట్‌లైన్ చేయబడిన VMA శ్రేణి ఫిక్సప్ లోపంతో.
అంతగా లేదు (XC8-2271) st rstr ( ) యొక్క నమూనాలు మరియు ఇతర విధుల నుండి -mconst-data-inprogmem ఫీచర్ నిలిపివేయబడినప్పుడు తిరిగి వచ్చిన స్ట్రింగ్ పాయింటర్‌లలో ప్రామాణికం కాని కాన్స్ట్ క్వాలిఫైయర్‌ను ఇకపై పేర్కొనవద్దు. avrxmega3 మరియు avrtiny పరికరాలతో, ఈ ఫీచర్ శాశ్వతంగా ప్రారంభించబడిందని గమనించండి.
లాస్ట్ ఇనిషియలైజర్‌లు (XC8-2269) కంటే ఎక్కువ ఉన్నప్పుడు అనువాద యూనిట్‌లోని ఒక వేరియబుల్ ఒక విభాగంలో ఉంచబడింది (_విభాగం లేదా _attribute_ ((విభాగం)) ఉపయోగించి), మరియు అటువంటి మొదటి వేరియబుల్ సున్నా ప్రారంభించబడింది లేదా ఇనిషియలైజర్ లేదు, అదే అనువాద యూనిట్‌లోని ఇతర వేరియబుల్‌ల కోసం ఇనిషియలైజర్‌లు అదే విభాగంలో ఓడిపోయారు.
5.1 వెర్షన్ 2.29 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
5.2 వెర్షన్ 2.20
దీర్ఘ ఆదేశాలతో లోపం (XC8-1983) AVR లక్ష్యాన్ని ఉపయోగిస్తున్నప్పుడు, కంపైలర్ ఆగిపోయి ఉండవచ్చు file కమాండ్ లైన్ చాలా పెద్దది మరియు కోట్‌లు, బ్యాక్‌స్లాష్‌లు మొదలైన ప్రత్యేక అక్షరాలను కలిగి ఉంటే లోపం కనుగొనబడలేదు.
కేటాయించని రోడేటా విభాగం (XC8-1920) avrxmega3 మరియు avrtiny ఆర్కిటెక్చర్‌ల కోసం నిర్మించేటప్పుడు కస్టమ్ రోడేటా విభాగాల కోసం మెమరీని కేటాయించడంలో AVR లింకర్ విఫలమైంది, ఇది మెమరీ అతివ్యాప్తి లోపాలను సంభావ్యంగా ఉత్పత్తి చేస్తుంది.
5.3 వెర్షన్ 2.19 (ఫంక్షనల్ సేఫ్టీ రిలీజ్)
ఏదీ లేదు.
5.4 వెర్షన్ 2.10
పునరావాస వైఫల్యాలు (XC8-1891) లింకర్ సడలింపు తర్వాత విభాగాల మధ్య మెమరీ 'రంధ్రాలను' వదిలివేయడం బెస్ట్ ఫిట్ అలోకేటర్. మెమరీని ఫ్రాగ్మెంటింగ్ చేయడం పక్కన పెడితే, ఇది pc-రిలేటివ్ జంప్‌లకు సంబంధించిన లింకర్ రీలొకేషన్ వైఫల్యాలు లేదా కాల్‌లు పరిధి దాటిపోయే అవకాశాన్ని పెంచింది.
సడలింపు ద్వారా రూపాంతరం చెందని సూచనలు (XC8-1889) జంప్ లేదా కాల్ సూచనల కోసం లింకర్ సడలింపు జరగలేదు, దీని లక్ష్యాలను సడలించినట్లయితే చేరుకోవచ్చు.
తప్పిపోయింది కార్యాచరణ (XC8E-388) నుండి అనేక నిర్వచనాలు , clock_div_t మరియు clock_prescale set () వంటివి ATmega324PB, ATmega328PB, ATtiny441 మరియు ATtiny841తో సహా పరికరాల కోసం నిర్వచించబడలేదు.
మాక్రోలు లేవు ప్రీప్రాసెసర్ మాక్రోలు _XC8_MODE_, _XC8_VERS ION, _XC మరియు _XC8 స్వయంచాలకంగా కంపైలర్ ద్వారా నిర్వచించబడలేదు. ఇవి ఇప్పుడు అందుబాటులో ఉన్నాయి.
5.5 వెర్షన్ 2.05
అంతర్గత కంపైలర్ లోపం (XC8-1822) Windows కింద నిర్మిస్తున్నప్పుడు, కోడ్‌ని ఆప్టిమైజ్ చేసేటప్పుడు అంతర్గత కంపైలర్ లోపం ఏర్పడి ఉండవచ్చు.
RAM ఓవర్‌ఫ్లో కనుగొనబడలేదు (XC8-1800, XC8-1796) అందుబాటులో ఉన్న RAMని మించిన ప్రోగ్రామ్‌లు కొన్ని సందర్భాల్లో కంపైలర్ ద్వారా కనుగొనబడలేదు, ఫలితంగా రన్‌టైమ్ కోడ్ వైఫల్యం ఏర్పడుతుంది.
విస్మరించబడిన ఫ్లాష్ మెమరీ (XC8-1792) avrxmega3 మరియు avrtiny పరికరాల కోసం, ఫ్లాష్ మెమరీలోని భాగాలు MPLAB X ద్వారా ప్రోగ్రామ్ చేయబడలేదు. IDE.
మెయిన్‌ని అమలు చేయడంలో వైఫల్యం (XC8-1788) ప్రోగ్రామ్ నిర్వచించబడిన గ్లోబల్ వేరియబుల్స్ లేని కొన్ని సందర్భాల్లో, రన్‌టైమ్ స్టార్టప్ కోడ్ నిష్క్రమించలేదు మరియు ప్రధాన ( ) ఫంక్షన్‌ని చేరుకోలేదు.
తప్పు మెమరీ సమాచారం (XC8-1787) avrxmega3 మరియు avrtiny పరికరాల కోసం, ప్రోగ్రామ్ మెమరీకి బదులుగా RAMని రీడ్-ఓన్లీ డేటా వినియోగిస్తోందని avr-సైజ్ ప్రోగ్రామ్ నివేదించింది.
తప్పు ప్రోగ్రామ్ మెమరీ రీడ్ (XC8-1783) డేటా అడ్రస్ స్పేస్‌లో మ్యాప్ చేయబడిన ప్రోగ్రామ్ మెమరీతో పరికరాల కోసం కంపైల్ చేయబడిన ప్రాజెక్ట్‌లు మరియు PROGMEM స్థూల/లక్షణాన్ని ఉపయోగించి ఆబ్జెక్ట్‌లను నిర్వచించేవి ఈ ఆబ్జెక్ట్‌లను తప్పు చిరునామా నుండి చదివి ఉండవచ్చు.
లక్షణాలతో అంతర్గత లోపం (XC8-1773) మీరు పాయింటర్ ఆబ్జెక్ట్‌లను దీనితో నిర్వచించినట్లయితే అంతర్గత లోపం సంభవించింది
పాయింటర్ పేరు మరియు డీరిఫరెన్స్ చేయబడిన రకం మధ్య _at () లేదా లక్షణం() టోకెన్‌లు, ఉదాహరణకుampలే, చార్ *
_at (0x800150) cp; అలాంటి కోడ్ ఎదురైతే ఇప్పుడు హెచ్చరిక జారీ చేయబడింది.
మెయిన్‌ని అమలు చేయడంలో వైఫల్యం (XC8-1780, XC8-1767, XC8-1754) EEPROM వేరియబుల్స్‌ని ఉపయోగించడం లేదా కాన్ఫిగర్ ప్రాగ్మాని ఉపయోగించి ఫ్యూజ్‌లను నిర్వచించడం వలన ప్రధాన ( )కి చేరుకునే ముందు, రన్‌టైమ్ స్టార్టప్ కోడ్‌లో తప్పు డేటా ప్రారంభీకరణ మరియు/లేదా ప్రోగ్రామ్ అమలును లాక్ చేసి ఉండవచ్చు.
చిన్న పరికరాలతో ఫ్యూజ్ లోపం (XC8-1778, XC8-1742) attiny4/5/9/ 10/20/40 పరికరాలు వాటి హెడర్‌లో తప్పు ఫ్యూజ్ పొడవును కలిగి ఉన్నాయి fileఫ్యూజ్‌లను నిర్వచించిన కోడ్‌ను రూపొందించడానికి ప్రయత్నిస్తున్నప్పుడు లింకర్ దోషాలకు దారి తీస్తుంది.
విభజన లోపం (XC8-1777) అడపాదడపా విభజన లోపం సరిదిద్దబడింది.
అసెంబ్లర్ క్రాష్ (XC8-1761) కంపైలర్ ఉబుంటు 18 కింద రన్ చేయబడినప్పుడు avr-as అసెంబ్లర్ క్రాష్ అయి ఉండవచ్చు.
ఆబ్జెక్ట్‌లు క్లియర్ చేయబడలేదు (XC8-1752) ప్రారంభించబడని స్టాటిక్ నిల్వ వ్యవధి ఆబ్జెక్ట్‌లు రన్‌టైమ్ స్టార్టప్ కోడ్ ద్వారా క్లియర్ చేయబడి ఉండకపోవచ్చు.
వైరుధ్య పరికర వివరణ విస్మరించబడింది (XC8-1749) బహుళ పరికర స్పెసిఫికేషన్ ఎంపికలను ఉపయోగించినప్పుడు మరియు విభిన్న పరికరాలను సూచించినప్పుడు కంపైలర్ లోపాన్ని సృష్టించడం లేదు.
కుప్ప ద్వారా మెమరీ అవినీతి (XC8-1748) ది _heap_start చిహ్నం తప్పుగా సెట్ చేయబడింది, దీని ఫలితంగా సాధారణ వేరియబుల్స్ కుప్ప ద్వారా పాడయ్యే అవకాశం ఉంది.
లింకర్ రీలొకేషన్ ఎర్రర్ (XC8-1739) కోడ్‌లో rjmp లేదా rcall సరిగ్గా 4k బైట్‌ల దూరంలో ఉన్న లక్ష్యాన్ని కలిగి ఉన్నప్పుడు లింకర్ రీలొకేషన్ ఎర్రర్ ఏర్పడి ఉండవచ్చు.
5.6 వెర్షన్ 2.00
ఏదీ లేదు.

తెలిసిన సమస్యలు

కంపైలర్ యొక్క ఆపరేషన్‌లో క్రింది పరిమితులు ఉన్నాయి. ఇవి సాధారణ కోడింగ్ పరిమితులు కావచ్చు లేదా వినియోగదారు మాన్యువల్‌లో ఉన్న సమాచారం నుండి విచలనాలు కావచ్చు. టైటిల్‌లోని బ్రాకెట్ చేయబడిన లేబుల్(లు) ట్రాకింగ్ డేటాబేస్‌లో సమస్య యొక్క గుర్తింపు. మీరు సపోర్ట్‌ని సంప్రదించాల్సిన అవసరం ఉన్నట్లయితే ఇది ప్రయోజనకరంగా ఉండవచ్చు. లేబుల్‌లు లేని అంశాలు మోడీ కార్యనిర్వహణను వివరించే పరిమితులు మరియు అవి శాశ్వతంగా అమలులో ఉండే అవకాశం ఉంది.
6.1 MPLAB X IDE ఇంటిగ్రేషన్
MPLAB IDE ఇంటిగ్రేషన్ MPLAB IDE నుండి కంపైలర్‌ని ఉపయోగించాలంటే, కంపైలర్‌ని ఇన్‌స్టాల్ చేసే ముందు మీరు తప్పనిసరిగా MPLAB IDEని ఇన్‌స్టాల్ చేయాలి.
6.2 కోడ్ జనరేషన్
సెగ్‌ఫాల్ట్ విత్ సెక్షన్-యాంకర్స్ ఆప్షన్ (XC8-3045) ప్రోగ్రామ్ వేరియబుల్ ఆర్గ్యుమెంట్ లిస్ట్‌లతో ఫంక్షన్‌లను నిర్వచిస్తుంది మరియు -fsection-anchors ఎంపికను ఉపయోగిస్తే అంతర్గత కంపైలర్ ఎర్రర్‌ను ప్రేరేపించి ఉండవచ్చు: సెగ్మెంటేషన్ తప్పు.
డీబగ్ సమాచారం సమకాలీకరించబడలేదు (XC8-2948) లింకర్ సడలింపు ఆప్టిమైజేషన్‌లు సూచనలను కుదించినప్పుడు (ఉదాampఆర్‌కాల్ సూచనలకు కాల్ చేయండి), ఒక విభాగంలో ఒకటి కంటే ఎక్కువ ష్రింక్ ఆపరేషన్‌లు జరుగుతున్నప్పుడు చిరునామా మ్యాపింగ్‌లకు సోర్స్ లైన్ సింక్‌లో ఉండకపోవచ్చు.
దిగువన ఉన్న మాజీలోampఅయితే, ఫూకి రెండు కాల్‌లు ఉన్నాయి, అవి సాపేక్ష కాల్‌లకు రిలాక్స్‌గా ఉంటాయి.
PA మెమరీ కేటాయింపు వైఫల్యం (XC8-2881) విధానపరమైన సంగ్రహణ ఆప్టిమైజర్‌లను ఉపయోగిస్తున్నప్పుడు, పరికరంలో అందుబాటులో ఉన్న ప్రోగ్రామ్ మెమరీకి కోడ్ పరిమాణం దగ్గరగా ఉన్నప్పుడు లింకర్ మెమరీ కేటాయింపు లోపాలను నివేదించవచ్చు, అయినప్పటికీ ప్రోగ్రామ్ అందుబాటులో ఉన్న స్థలానికి సరిపోయేలా ఉంటుంది.
స్మార్ట్-I0 (XC8-2872) అంత స్మార్ట్ కాదు const-data-in-progmem ఫీచర్ డిసేబుల్ చేయబడి ఉంటే లేదా పరికరం మొత్తం ఫ్లాష్ డేటా మెమరీలోకి మ్యాప్ చేయబడి ఉంటే, కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ చెల్లుబాటు అయ్యే కానీ ఉప-ఆప్టిమల్ కోడ్‌ని snprint f ఫంక్షన్‌కు ఉత్పత్తి చేస్తుంది.
ఇంకా తక్కువ స్మార్ట్ స్మార్ట్-I0 (XC8-2869) -flto మరియు -fno-builtin ఎంపికలు రెండింటినీ ఉపయోగించినప్పుడు కంపైలర్ యొక్క స్మార్ట్-io ఫీచర్ చెల్లుబాటు అయ్యే కానీ ఉపశీర్షిక కోడ్‌ను ఉత్పత్తి చేస్తుంది.
సబ్‌ప్టిమల్ రీడ్-ఓన్లీ డేటా ప్లేస్‌మెంట్ (XC8-2849) లింకర్‌కు ప్రస్తుతం APPCODE మరియు APPDATA మెమరీ విభాగాలు లేదా మెమరీ మ్యాప్‌లోని [నో-చదివినప్పుడు-వ్రాసుకోవద్దు అనే విభాగాల గురించి తెలియదు. ఫలితంగా, లింకర్ మెమరీలో అనుచితమైన ప్రాంతంలో చదవడానికి మాత్రమే డేటాను కేటాయించే అవకాశం ఉంది. const-data-in-progmem ఫీచర్ ఎనేబుల్ చేయబడితే, ప్రత్యేకించి const-data-in-config-mapped-progmem ఫీచర్ కూడా ఎనేబుల్ చేయబడితే, డేటా మిస్ ప్లేస్ అయ్యే అవకాశం పెరుగుతుంది. అవసరమైతే ఈ లక్షణాలను నిలిపివేయవచ్చు.
వస్తువు file ప్రాసెసింగ్ ఆర్డర్ (XC8-2863) వస్తువులు ఉండే క్రమం fileలింకర్ ద్వారా లు ప్రాసెస్ చేయబడతాయి, విధానపరమైన సంగ్రహణ ఆప్టిమైజేషన్ల (-mpa ఎంపిక) వినియోగం ఆధారంగా తేడా ఉండవచ్చు. ఇది బహుళ మాడ్యూళ్లలో బలహీనమైన ఫంక్షన్‌లను నిర్వచించే కోడ్‌ను మాత్రమే ప్రభావితం చేస్తుంది.
సంపూర్ణ (XC8-2777)తో లింకర్ లోపం RAM ప్రారంభంలో ఒక అడ్రస్ వద్ద ఒక వస్తువు సంపూర్ణంగా చేయబడినప్పుడు మరియు ప్రారంభించబడని వస్తువులు కూడా నిర్వచించబడినప్పుడు, లింకర్ లోపం ప్రేరేపించబడవచ్చు.
షార్ట్ వేక్-అప్ IDలు (XC8-2775) ATA5700/2 పరికరాల కోసం, PHIDO/1 రిజిస్టర్‌లు 16 బిట్‌ల వెడల్పు కాకుండా 32 బిట్‌ల వెడల్పుగా మాత్రమే నిర్వచించబడ్డాయి.
గుర్తుకు కాల్ చేస్తున్నప్పుడు లింకర్ క్రాష్ (XC8-2758) -cc., –de f sym లింకర్ ఎంపికను ఉపయోగించి నిర్వచించబడిన చిహ్నాన్ని సోర్స్ కోడ్ పిలిచినప్పుడు -mrelax డ్రైవర్ ఎంపికను ఉపయోగించినట్లయితే లింకర్ క్రాష్ కావచ్చు.
తప్పు ప్రారంభించడం (XC8-2679) అక్కడ డేటా మెమరీలో కొన్ని గ్లోబల్/స్టాటిక్ బైట్-సైజ్ ఆబ్జెక్ట్‌ల ప్రారంభ విలువలు ఎక్కడ ఉంచబడ్డాయి మరియు రన్‌టైమ్‌లో వేరియబుల్స్ యాక్సెస్ చేయబడే వాటి మధ్య వ్యత్యాసం.
చెడు పరోక్ష ఫంక్షన్ కాల్‌లు (XC8-2628) కొన్ని సందర్భాల్లో, నిర్మాణంలో భాగంగా నిల్వ చేయబడిన ఫంక్షన్ పాయింటర్ ద్వారా చేసిన ఫంక్షన్ కాల్‌లు విఫలం కావచ్చు.
strtof హెక్సాడెసిమల్ ఫ్లోట్‌ల కోసం సున్నాని అందిస్తుంది (XC8-2626) లైబ్రరీ ఫంక్షన్‌లు strtof et al మరియు scanf ( ) et al, ఎల్లప్పుడూ హెక్సాడెసిమల్ ఫ్లోటింగ్ పాయింట్ సంఖ్యను మారుస్తుంది, అది ఘాతాంకాన్ని సున్నాకి పేర్కొనదు. ఉదాహరణకుampలే:
strtof (“Oxl”, &endptr) ;
విలువ 0ని అందిస్తుంది, I కాదు.
సరికాని స్టాక్ అడ్వైజర్ మెసేజింగ్ (XC8-2542, XC8-2541) కొన్ని సందర్భాల్లో, పునరావృతం లేదా అనిశ్చిత స్టాక్‌కు సంబంధించి స్టాక్ అడ్వైజర్ హెచ్చరిక (బహుశా alloca()ని ఉపయోగించడం ద్వారా) విడుదల చేయబడదు.
డూప్లికేట్ అంతరాయ కోడ్‌తో వైఫల్యం (XC8-2421) ఒకటి కంటే ఎక్కువ అంతరాయ ఫంక్షన్‌లు ఒకే బాడీని కలిగి ఉన్న చోట, కంపైలర్‌లో ఒక అంతరాయ ఫంక్షన్‌కి మరొకటి కాల్ చేయడానికి అవుట్‌పుట్ ఉండవచ్చు. ఇది అన్ని కాల్-క్లాబర్డ్ రిజిస్టర్‌లు అనవసరంగా సేవ్ చేయబడటానికి దారి తీస్తుంది మరియు ప్రస్తుత అంతరాయ హ్యాండ్లర్ యొక్క ఎపిలోగ్ రన్ కాకముందే అంతరాయాలు ప్రారంభించబడతాయి, ఇది కోడ్ వైఫల్యానికి దారితీయవచ్చు.
చెల్లని DFP పాత్‌తో చెడ్డ అవుట్‌పుట్ (XC8-2376) చెల్లని DFP పాత్ మరియు 'స్పెక్'తో కంపైలర్ ప్రారంభించబడితే file ఎంచుకున్న పరికరం కోసం ఉనికిలో ఉంది, కంపైలర్ తప్పిపోయిన పరికర ఫ్యామిలీ ప్యాక్‌ను నివేదించడం లేదు మరియు బదులుగా 'స్పెక్'ని ఎంచుకోవడం file, ఇది చెల్లని అవుట్‌పుట్‌కు దారితీయవచ్చు. 'స్పెక్' fileలు పంపిణీ చేయబడిన DFPలతో తాజాగా ఉండకపోవచ్చు మరియు అంతర్గత కంపైలర్ పరీక్షతో మాత్రమే ఉపయోగించడానికి ఉద్దేశించబడ్డాయి.
మెమరీ అతివ్యాప్తి గుర్తించబడలేదు (XC8-1966) కంపైలర్ ఒక చిరునామా (_at ( ) ద్వారా) వద్ద సంపూర్ణంగా చేసిన ఆబ్జెక్ట్‌ల మెమరీ అతివ్యాప్తిని మరియు విభాగం ( ) స్పెసిఫైయర్‌ని ఉపయోగించి మరియు అదే చిరునామాకు లింక్ చేయబడిన ఇతర ఆబ్జెక్ట్‌లను గుర్తించడం లేదు.
లైబ్రరీ ఫంక్షన్‌లు మరియు _memx (XC8-1763)తో వైఫల్యం memx అడ్రస్ స్పేస్‌లో ఆర్గ్యుమెంట్ ఉన్న libgcc ఫ్లోట్ ఫంక్షన్‌లు విఫలం కావచ్చు. లైబ్రరీ రొటీన్‌లు కొంతమంది C ఆపరేటర్‌ల నుండి పిలవబడుతున్నాయని గమనించండి, కాబట్టి, ఉదాహరణకుample, కింది కోడ్ ప్రభావితం చేయబడింది:
తిరిగి regFloatVar > memxFloatVar;
పరిమిత libgcc అమలు (AVRTC-731) ATTiny4/5/9/10/20/40 ఉత్పత్తుల కోసం, libgccలో ప్రామాణిక C / Math లైబ్రరీ అమలు చాలా పరిమితంగా ఉంది లేదా ప్రస్తుతం లేదు.
ప్రోగ్రామ్ మెమరీ పరిమితులు (AVRTC-732) 128 kb కంటే ఎక్కువ ఉన్న ప్రోగ్రామ్ మెమరీ ఇమేజ్‌లకు టూల్‌చెయిన్ మద్దతు ఇస్తుంది; అయినప్పటికీ, -mre lax ఎంపికను ఉపయోగించినప్పుడు అవసరమైన ఫంక్షన్ స్టబ్‌లను రూపొందించడం కంటే సడలింపు లేకుండా మరియు సహాయక దోష సందేశం లేకుండా లింకర్ ఆబార్ట్ చేసిన సందర్భాలు ఉన్నాయి.
పేరు స్థల పరిమితులు (AVRTC-733) పేరు పెట్టబడిన చిరునామా ఖాళీలు టూల్‌చెయిన్ ద్వారా మద్దతివ్వబడతాయి, వినియోగదారు గైడ్ విభాగంలో పేర్కొన్న పరిమితులకు లోబడి ప్రత్యేక టైప్ క్వాలిఫైయర్‌లు.
సమయ మండలాలు ది లైబ్రరీ ఫంక్షన్‌లు GMTని ఊహిస్తాయి మరియు స్థానిక సమయ మండలాలకు మద్దతు ఇవ్వవు, కాబట్టి స్థానిక సమయం ( ) gmtime ( ) వలె అదే సమయానికి తిరిగి వస్తుంది, ఉదాహరణకుample.

file///Applications/microchip/xc8/v2.41/docs/Readme_XC8_for_AVR.htm

పత్రాలు / వనరులు

మైక్రోచిప్ MPLAB XC8 C కంపైలర్ డెవలప్‌మెంట్ సాఫ్ట్‌వేర్ [pdf] యజమాని మాన్యువల్
MPLAB XC8 C, MPLAB XC8 C కంపైలర్ డెవలప్‌మెంట్ సాఫ్ట్‌వేర్, కంపైలర్ డెవలప్‌మెంట్ సాఫ్ట్‌వేర్, డెవలప్‌మెంట్ సాఫ్ట్‌వేర్, సాఫ్ట్‌వేర్

సూచనలు

వ్యాఖ్యానించండి

మీ ఇమెయిల్ చిరునామా ప్రచురించబడదు. అవసరమైన ఫీల్డ్‌లు గుర్తించబడ్డాయి *