MPLAB® XC8 C કમ્પાઈલર વર્ઝન 2.41 AVR® MCU માટે રિલીઝ નોટ્સ
માલિકની માર્ગદર્શિકા
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 MCUs ટૂલ્સ માટે 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. વિન્ડોઝ માટે દ્વિસંગી કોડ-સાઈન કરેલ છે. macOS માટે દ્વિસંગી કોડ-હસ્તાક્ષરિત અને નોટરાઇઝ્ડ છે. MPLAB XC નેટવર્ક લાયસન્સ સર્વર વિવિધ 64-બીટ ઓપરેટિંગ સિસ્ટમ્સ માટે ઉપલબ્ધ છે, જેમાં Microsoft Windows 10 અને તેથી વધુનો સમાવેશ થાય છે; ઉબુન્ટુ 18.04 અને તેથી વધુ; અથવા macOS 10.15 અને તેથી વધુ. સર્વર વિન્ડોઝ સર્વર, 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 કમ્પાઇલર્સ (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 ઑપરેટિંગ સિસ્ટમ્સમાંથી કોઈપણ હેઠળ કમ્પાઇલર ઇન્સ્ટોલ કરવામાં મુશ્કેલીઓનો અનુભવ થાય છે, તો નીચેના સૂચનો અજમાવી જુઓ.
એડમિનિસ્ટ્રેટર તરીકે ઇન્સ્ટોલ ચલાવો.
ઇન્સ્ટોલર એપ્લિકેશનની પરવાનગીઓને 'સંપૂર્ણ નિયંત્રણ' પર સેટ કરો. (ફાઇલ પર જમણું-ક્લિક કરો, ગુણધર્મો પસંદ કરો, સુરક્ષા ટેબ, વપરાશકર્તા પસંદ કરો, સંપાદિત કરો.)
ટેમ્પ ફોલ્ડરની પરવાનગીઓને 'ફુલ કંટ્રોલ' પર સેટ કરો.
ટેમ્પ ફોલ્ડરનું સ્થાન નક્કી કરવા માટે, Run આદેશમાં %temp% લખો (Windows logo key + R).
આ તે ડિરેક્ટરી દર્શાવતો ફાઇલ એક્સપ્લોરર ડાયલોગ ખોલશે અને તમને તે ફોલ્ડરનો પાથ નક્કી કરવા દેશે.
1.9. કમ્પાઇલર દસ્તાવેજીકરણ
સ્ક્રીનશૉટમાં દર્શાવ્યા મુજબ MPLAB X IDE ડેશબોર્ડમાં બ્લુ હેલ્પ બટનને ક્લિક કરતી વખતે તમારા બ્રાઉઝરમાં ખુલતા HTML પેજ પરથી કમ્પાઇલરની વપરાશકર્તા માર્ગદર્શિકાઓ ખોલી શકાય છે.
જો તમે 8-બીટ AVR લક્ષ્યો માટે નિર્માણ કરી રહ્યાં છો, તો AVR® MCU માટે MPLAB® XC8 C કમ્પાઈલર વપરાશકર્તા માર્ગદર્શિકામાં તે કમ્પાઈલર વિકલ્પો અને સુવિધાઓ વિશેની માહિતી છે જે આ આર્કિટેક્ચરને લાગુ પડે છે.
1.10. ગ્રાહક આધાર
માઈક્રોચિપ આ કમ્પાઈલર વર્ઝન સંબંધિત બગ રિપોર્ટ્સ, સૂચનો અથવા ટિપ્પણીઓનું સ્વાગત કરે છે. કૃપા કરીને સપોર્ટ સિસ્ટમ દ્વારા કોઈપણ બગ રિપોર્ટ્સ અથવા ફીચર વિનંતીઓને નિર્દેશિત કરો.
દસ્તાવેજીકરણ અપડેટ્સ
MPLAB XC8 દસ્તાવેજીકરણના ઓન-લાઈન અને અદ્યતન સંસ્કરણો માટે, કૃપા કરીને માઈક્રોચિપના ઓનલાઈન ટેકનિકલ દસ્તાવેજોની મુલાકાત લો webસાઇટ આ પ્રકાશનમાં નવું અથવા અપડેટ કરેલ AVR દસ્તાવેજીકરણ:
- MPLAB® XC8 C કમ્પાઈલર AVR® MCU (રિવિઝન G) માટે વપરાશકર્તા માર્ગદર્શિકા
- AVR® GNU Toolchain to MPLAB® XC8 સ્થળાંતર માર્ગદર્શિકા (પુનરાવર્તન A)
- હેક્સમેટ વપરાશકર્તા માર્ગદર્શિકા (પુનરાવર્તન B)
AVR® GNU Toolchain to MPLAB® XC8 સ્થળાંતર માર્ગદર્શિકા સ્રોત કોડ અને બિલ્ડ વિકલ્પોમાં ફેરફારોનું વર્ણન કરે છે કે જે તમે AVR 8-bit 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 ફાઈલમાં 0x860000 at.bootrow એડ્રેસ સાથે પ્રીફિક્સ સાથે મૂકશે. આ વિભાગોનો ઉપયોગ BOOTROW મેમરી માટે થાય છે, જે કીના સંગ્રહ અને અન્ય સુરક્ષિત માહિતી માટે રચાયેલ છે જે ફક્ત બુટલોડર માટે જ સુલભ હોવી જોઈએ.
રીડન્ડન્ટ રીટર્ન એલિમિનેશન (XC8-3048) જ્યારે કસ્ટમ લિંકર સ્ક્રિપ્ટ્સનો ઉપયોગ કરવામાં આવે ત્યારે કમ્પાઈલર હવે ટેઈલ જમ્પ સાથે રીટ ફંક્શન્સમાં રીડન્ડન્ટ સૂચનાઓને દૂર કરશે. આ અગાઉ કરવામાં આવેલ સમાન ઑપ્ટિમાઇઝેશન છે, પરંતુ તે હવે બધા અનાથ વિભાગો પર કરવામાં આવે છે, પછી ભલે કસ્ટમ લિંકર સ્ક્રિપ્ટનો ઉપયોગ કરવામાં આવે અને શ્રેષ્ઠ ફિટ ફાળવણી યોજના અમલમાં ન હોય. સમયના પ્રકારમાં ફેરફાર (XC8-2982, 2932) C99 માનક લાઇબ્રેરીનો પ્રકાર, time_t થી એક પ્રકારમાં બદલાઈ ગયો છે, જે અમુક સમય-સંબંધિત લાંબા લાંબા કાર્યોમાં કોડ-સાઇઝ સુધારણા આપે છે, જેમ કે. સહી ન કરેલ લાંબા mktime()
નવી nop (XC8-2946, 2945) માં મેક્રો ઉમેરવામાં આવ્યું છે. આ મેક્રો નો- NOP() દાખલ કરે છે આઉટપુટમાં nop ઓપરેશન સૂચના.
XCLM (XC8-2944) માં અપડેટ કમ્પાઇલર સાથે ઉપયોગમાં લેવાતા લાયસન્સ મેનેજરને અપડેટ કરવામાં આવ્યું છે અને હવે કમ્પાઇલરના લાયસન્સની વિગતો તપાસતી વખતે વધુ પ્રતિભાવશીલ છે.
Trampઓલાઈન્ડ કોલ્સ (XC8-2760) કમ્પાઈલર હવે લાંબા-ફોર્મ કોલ સૂચનાઓને ટૂંકા સાપેક્ષ કોલ સાથે બદલી શકે છે જ્યારે સૂચનાઓના સંબંધિત સ્વરૂપો સામાન્ય રીતે તેમના ગંતવ્યની શ્રેણીની બહાર હશે. આ પરિસ્થિતિમાં, કમ્પાઈલર સૂચનાને કૉલ કરવા માટે સૂચનાઓ સાથે બદલવાનો પ્રયાસ કરશે જે 'tr.ampજરૂરી સરનામા પર oline' એક્ઝેક્યુશન, ઉદાહરણ તરીકે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, AVR64D28,AVR64 32, અને AVR64EA48.
સુધારેલ પ્રક્રિયાગત અમૂર્તતા પ્રક્રિયાગત અમૂર્તતા (PA) ઓપ્ટિમાઇઝેશન ટૂલને સુધારવામાં આવ્યું છે જેથી ફંક્શન કોલ સૂચના (/ ) ધરાવતા કોડનો ઉપયોગ કરી શકાય. જો સ્ટેકનો ઉપયોગ ફંક્શનમાંથી રિટર્ન વેલ્યુ મેળવવા અથવા દલીલો પસાર કરવા માટે ન થાય તો જ કૉલ આરકૉલ થશે. વેરિયેબલ આર્ગ્યુમેન્ટ લિસ્ટ સાથે ફંક્શનને કૉલ કરતી વખતે અથવા આ હેતુ માટે નિયુક્ત રજિસ્ટર કરતાં વધુ દલીલો લેતા ફંક્શનને કૉલ કરતી વખતે સ્ટેકનો ઉપયોગ થાય છે. આ સુવિધા વિકલ્પનો ઉપયોગ કરીને અક્ષમ કરી શકાય છે, અથવા પ્રક્રિયાગત એબ્સ્ટ્રેક્શનને ઑબ્જેક્ટ ફાઇલ અથવા ફંક્શન માટે અનુક્રમે- અને અનુક્રમે, અથવા ફંક્શન્સ સાથે પસંદગીયુક્ત રીતે એટ્રિબ્યુટ (સ્પેસિફાયર) નો ઉપયોગ કરીને સંપૂર્ણપણે અક્ષમ કરી શકાય છે.
mno-pa-આઉટલાઇન-કોલ્સ -mno-pa-ઓન-file -mno-pa-ઓન-ફંક્શન નોપા કોડ કવરેજ મેક્રો કમ્પાઈલર હવે મેક્રોને વ્યાખ્યાયિત કરે છે જો માન્ય વિકલ્પ __nopa __CODECOV -mcodecov સ્પષ્ટ કરેલ હોય.
મેમરી આરક્ષણ વિકલ્પ ડ્રાઇવર હવે AVR લક્ષ્યો માટે નિર્માણ કરતી વખતે xc8-cc -mreserve=space@start:end વિકલ્પ સ્વીકારશે. આ વિકલ્પ ડેટા અથવા પ્રોગ્રામ મેમરી સ્પેસમાં ચોક્કસ મેમરી રેન્જને આરક્ષિત કરે છે, લિંકરને આ વિસ્તારમાં કોડ અથવા ઑબ્જેક્ટ્સ બનાવતા અટકાવે છે. સ્માર્ટર સ્માર્ટ IO સ્માર્ટ IO ફંક્શનમાં ઘણા સુધારા કરવામાં આવ્યા છે, જેમાં પ્રિન્ટએફ કોર કોડમાં સામાન્ય ટ્વીક્સ, %n કન્વર્ઝન સ્પેસિફાયરને સ્વતંત્ર વેરિઅન્ટ તરીકે ગણવા, ડિમાન્ડ પર વરાર્ગ પૉપ રૂટિનમાં લિંક કરવા, હેન્ડલિંગ માટે શક્ય હોય ત્યાં ટૂંકા ડેટા પ્રકારોનો ઉપયોગ કરવો. 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 વિકલ્પની સમાન રીતે કામ કરે છે, પરંતુ માત્ર ઇન્ટરપ્ટ ફંક્શન્સ (ISRs) ને અસર કરે છે.
હજુ પણ વધુ સુધારેલ સંદર્ભ સ્વિચીંગ નવો -mgas-isr-prologues વિકલ્પ નાના વિક્ષેપ સેવા દિનચર્યાઓ માટે જનરેટ થયેલ સંદર્ભ સ્વીચ કોડને નિયંત્રિત કરે છે. જ્યારે સક્ષમ હશે, ત્યારે આ સુવિધા એસેમ્બલર પાસે રજિસ્ટર વપરાશ માટે ISR સ્કેન કરશે અને જો જરૂરી હોય તો જ આ વપરાયેલ રજિસ્ટર સાચવશે.
રૂપરેખાંકિત ફ્લેશ મેપિંગ AVR DA અને AVR DB પરિવારમાં કેટલાક ઉપકરણોમાં SFR (દા.ત. FLMAP) હોય છે જે સ્પષ્ટ કરે છે કે પ્રોગ્રામ મેમરીના કયા 32k સેક્શનને ડેટા મેમરીમાં મેપ કરવામાં આવશે. નવા – mconst-data-in-config-mapped-progmem વિકલ્પનો ઉપયોગ લિંકર તમામ કોન્સ્ટ-ક્વોલિફાઇડ ડેટાને એક 32k વિભાગમાં રાખવા માટે કરી શકાય છે અને આ ડેટા ડેટા મેમરીમાં મેપ થયેલ છે તેની ખાતરી કરવા માટે સંબંધિત SFR રજિસ્ટરને આપમેળે પ્રારંભ કરી શકાય છે. જગ્યા, જ્યાં તેને વધુ અસરકારક રીતે એક્સેસ કરવામાં આવશે.
માઇક્રોચિપ યુનિફાઇડ સ્ટાન્ડર્ડ લાઇબ્રેરીઝ બધા MPLAB XC કમ્પાઇલર્સ માઇક્રોચિપ યુનિફાઇડ સ્ટાન્ડર્ડ લાઇબ્રેરી શેર કરશે, જે હવે MPLAB XC8 ના આ પ્રકાશન સાથે ઉપલબ્ધ છે. AVO MCU માટે MPLA# XC8 C કમ્પાઇલર વપરાશકર્તા માર્ગદર્શિકામાં હવે આ પ્રમાણભૂત કાર્યો માટેના દસ્તાવેજોનો સમાવેશ થતો નથી. આ માહિતી હવે માઇક્રોચિપ યુનિફાઇડ સ્ટાન્ડર્ડ લાઇબ્રેરી સંદર્ભ માર્ગદર્શિકામાં મળી શકે છે. નોંધ કરો કે avr-libc દ્વારા અગાઉ વ્યાખ્યાયિત કરાયેલ કેટલીક કાર્યક્ષમતા હવે ઉપલબ્ધ નથી. (લીલા કાર્યક્ષમતા જુઓ.)
સ્માર્ટ I0 નવી યુનિફાઇડ લાઇબ્રેરીઓના ભાગ રૂપે, આ ફંક્શનનો પ્રોગ્રામમાં ઉપયોગ કેવી રીતે થાય છે તેના આધારે, printf અને scanf પરિવારોમાં I0 ફંક્શન હવે દરેક બિલ્ડ પર કસ્ટમ-જનરેટ થાય છે. આ પ્રોગ્રામ દ્વારા ઉપયોગમાં લેવાતા સંસાધનોને નોંધપાત્ર રીતે ઘટાડી શકે છે.
સ્માર્ટ ICI સહાય વિકલ્પ જ્યારે સ્માર્ટ I0 ફંક્શન્સ (જેમ કે પ્રિન્ટ f () અથવા scanf ()) માટે કૉલ્સનું વિશ્લેષણ કરતી વખતે, કમ્પાઈલર હંમેશા ફોર્મેટ સ્ટ્રિંગ પરથી નક્કી કરી શકતું નથી અથવા કૉલ દ્વારા જરૂરી તે રૂપાંતરણ સ્પષ્ટીકરણકર્તાઓની દલીલોમાંથી અનુમાન કરી શકતું નથી. અગાઉ, કમ્પાઈલર હંમેશા કોઈ ધારણાઓ ન રાખતા અને ખાતરી કરે છે કે સંપૂર્ણ કાર્યકારી 10 કાર્યો અંતિમ પ્રોગ્રામ ઈમેજ સાથે જોડાયેલા છે. એક નવો – msmart-io-format=fmt વિકલ્પ ઉમેરવામાં આવ્યો છે જેથી કમ્પાઈલરને તેના બદલે સ્માર્ટ I0 ફંક્શન્સ દ્વારા ઉપયોગમાં લેવાતા કન્વર્ઝન સ્પેસિફાયરની વપરાશકર્તા દ્વારા જાણ કરી શકાય કે જેનો ઉપયોગ અસ્પષ્ટ છે, જે વધુ પડતા લાંબા 10 દિનચર્યાઓને લિંક થવાથી અટકાવે છે. (વધુ વિગતો માટે smart-io-format વિકલ્પ જુઓ.)
વૈવિધ્યપૂર્ણ વિભાગો મૂકતા પહેલા, -W1, -section-start વિકલ્પ માત્ર ઉલ્લેખિત વિભાગને વિનંતી કરેલ સરનામા પર મૂકે છે જ્યારે લિંકર સ્ક્રિપ્ટ સમાન નામ સાથે આઉટપુટ વિભાગને વ્યાખ્યાયિત કરે છે. જ્યારે તે કેસ ન હતો, ત્યારે વિભાગને લિંકર દ્વારા પસંદ કરાયેલ સરનામા પર મૂકવામાં આવ્યો હતો અને વિકલ્પને આવશ્યકપણે અવગણવામાં આવ્યો હતો. હવે વિકલ્પને બધા કસ્ટમ વિભાગો માટે સન્માનિત કરવામાં આવશે, ભલે લિંકર સ્ક્રિપ્ટ વિભાગને વ્યાખ્યાયિત કરતી ન હોય. જો કે, નોંધ કરો કે પ્રમાણભૂત વિભાગો માટે, જેમ કે . ટેક્સ્ટ, . bss અથવા. ડેટા, શ્રેષ્ઠ યોગ્ય ફાળવણીકર્તા પાસે હજુ પણ તેમના પ્લેસમેન્ટ પર સંપૂર્ણ નિયંત્રણ રહેશે, અને વિકલ્પની કોઈ અસર થશે નહીં. વપરાશકર્તા માર્ગદર્શિકામાં વર્ણવ્યા મુજબ -ton, -Tsection=addr વિકલ્પનો ઉપયોગ કરો.
3.6. સંસ્કરણ 2.32
સ્ટેક ગાઈડન્સ પ્રો કમ્પાઈલર લાયસન્સ સાથે ઉપલબ્ધ છે, કમ્પાઈલરની સ્ટેક ગાઈડન્સ ફીચરનો ઉપયોગ પ્રોગ્રામ દ્વારા ઉપયોગમાં લેવાતા કોઈપણ સ્ટેકની મહત્તમ ઊંડાઈનો અંદાજ કાઢવા માટે કરી શકાય છે. તે પ્રોગ્રામના કોલ ગ્રાફનું નિર્માણ અને વિશ્લેષણ કરે છે, દરેક ફંક્શનનો સ્ટેક ઉપયોગ નક્કી કરે છે અને એક રિપોર્ટ બનાવે છે, જેના પરથી પ્રોગ્રામ દ્વારા ઉપયોગમાં લેવાતા સ્ટેક્સની ઊંડાઈનો અંદાજ લગાવી શકાય છે. આ સુવિધા -mchp-stack-usage કમાન્ડ-લાઇન વિકલ્પ દ્વારા સક્ષમ કરેલ છે. એક્ઝેક્યુશન પછી સ્ટેક વપરાશનો સારાંશ છાપવામાં આવે છે. નકશામાં વિગતવાર સ્ટેક રિપોર્ટ ઉપલબ્ધ છે file, જે સામાન્ય રીતે વિનંતી કરી શકાય છે.
નીચેના AVR ભાગો માટે નવું ઉપકરણ સપોર્ટ સપોર્ટ ઉપલબ્ધ છે: ATTINY427, ATTINY424, ATTINY426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32B28, AVR64B32 32, અને AVR48DB16. રિટ્રેક્ટેડ ડિવાઇસ સપોર્ટ સપોર્ટ હવે નીચેના AVR ભાગો માટે ઉપલબ્ધ નથી: AVR28DA16, AVR32DA16 અને, AVR48DAXNUMX.
3.7. સંસ્કરણ 2.31
કોઈ નહિ.
3.8. સંસ્કરણ 2.30
ડેટા આરંભ અટકાવવા માટે નવો વિકલ્પ એક નવો -mno-data-init ડ્રાઇવર વિકલ્પ ડેટાના આરંભ અને bss વિભાગોને સાફ કરવાનું અટકાવે છે. તે ડુ કોપી ડેટાના આઉટપુટને દબાવીને કામ કરે છે અને એસેમ્બલીમાં સ્પષ્ટ બીએસએસ પ્રતીકો કરે છે files, જે બદલામાં લિંકર દ્વારા તે દિનચર્યાઓના સમાવેશને અટકાવશે.
ઉન્નત ઑપ્ટિમાઇઝેશન્સ અસંખ્ય ઑપ્ટિમાઇઝેશન સુધારાઓ કરવામાં આવ્યા છે, જેમાં રીડન્ડન્ટ રીટર્ન સૂચનાઓને દૂર કરવી, સ્કીપ-ઇફ-બીટ-ઇઝ સૂચનાને પગલે કેટલાક કૂદકા દૂર કરવા અને પ્રક્રિયાગત અમૂર્તતા અને આ પ્રક્રિયાને પુનરાવર્તિત કરવાની ક્ષમતામાં સુધારો કરવામાં આવ્યો છે. આમાંના કેટલાક ઑપ્ટિમાઇઝેશનને નિયંત્રિત કરવા માટે વધારાના વિકલ્પો હવે ઉપલબ્ધ છે, ખાસ કરીને -f વિભાગ-એન્કર્સ, જે એક પ્રતીકની સાપેક્ષમાં સ્થિર ઑબ્જેક્ટ્સની ઍક્સેસ કરવા માટે પરવાનગી આપે છે; -mpa-iterations=n, જે ડિફોલ્ટ 2 થી પ્રક્રિયાગત અમૂર્ત પુનરાવર્તનની સંખ્યા બદલવાની મંજૂરી આપે છે; અને, -mpa-callcost-shortcall, જે વધુ આક્રમક પ્રક્રિયાગત એબ્સ્ટ્રેક્શન કરે છે, એવી આશામાં કે લિંકર લાંબા કૉલ્સને આરામ આપી શકે છે. જો અંતર્ગત ધારણાઓ સાકાર ન થાય તો આ છેલ્લો વિકલ્પ કોડનું કદ વધારી શકે છે.
નવા ઉપકરણ સપોર્ટ નીચેના AVR ભાગો માટે ઉપલબ્ધ છે: AVR16DA28, AVR16DA32, AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DA28, AVRD128, AVR32DA128, AVR48DA128 64DB5272, AVR5790DB5790, અને AVR5791DB5795. રીટ્રેક્ટેડ ડિવાઇસ સપોર્ટ હવે નીચેના AVR ભાગો માટે ઉપલબ્ધ નથી: એટીએ 6285, એટીએ 6286, એટીએ 6612 એન, એટીએ 6613, એટીએ 6614, એટીએ 6616, એટીએ 6617, એટીએ 664251 સી, એટીએ XNUMX સી, એટીએ XNUMX ક, એટીએ XNUMX સી, એટીએ XNUMX સી, એટીએ XNUMX સી, એટીએ XNUMX સી, એટીએ XNUMX સી.
3.9. સંસ્કરણ 2.29 (કાર્યકારી સલામતી પ્રકાશન)
હેડર file કમ્પાઇલર બિલ્ટ-ઇન્સ માટે કમ્પાઇલર MISRA જેવા ભાષાના વિશિષ્ટતાઓને અનુરૂપ થઈ શકે તેની ખાતરી કરવા માટે, હેડર file, જે આપમેળે દ્વારા સમાવવામાં આવેલ છે , અપડેટ કરવામાં આવ્યું છે. આ હેડરમાં બિલ્ટિન_avr_nop ( ) અને બિલ્ટિન 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) ) નો ઉપયોગ કવરેજ વિશ્લેષણમાંથી ચોક્કસ કાર્યને બાકાત કરવા માટે થઈ શકે છે.
ઉપકરણ વર્ણન files એક નવું ઉપકરણ 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 નો ઉપયોગ કરીને ફંક્શન માટે પ્રક્રિયાગત એબ્સ્ટ્રેક્શનને અક્ષમ કરી શકાય છે, જે એટ્રિબ્યુટ ( (nopa, noinline) ) સુધી વિસ્તરે છે અને આમ ફંક્શન ઇનલાઇનિંગને થતું અટકાવે છે. અને ઇનલાઇન કોડનું એબ્સ્ટ્રેક્શન છે.
pragma માં લોક બીટ સપોર્ટ #pragma રૂપરેખા હવે AVR લોક બિટ્સ તેમજ અન્ય રૂપરેખાંકન બિટ્સનો ઉલ્લેખ કરવા માટે ઉપયોગ કરી શકાય છે. avr_chipinfo તપાસો. html file (ઉપર ઉલ્લેખિત) સેટિંગ/મૂલ્ય જોડી માટે આ વ્યવહાર સાથે વાપરવા માટે. નવા ઉપકરણ સપોર્ટ નીચેના ભાગો માટે ઉપલબ્ધ છે: AVR28DAl28, AVR64DAl28, AVR32DA 128, અને AVR48DA 128.
3.13. સંસ્કરણ 2.05
તમારા પૈસા માટે વધુ બિટ્સ આ કમ્પાઇલર અને લાયસન્સ મેનેજરનું macOS વર્ઝન હવે 64-બીટ એપ્લિકેશન છે. આ સુનિશ્ચિત કરશે કે કમ્પાઇલર macOS ના તાજેતરના સંસ્કરણો પર ચેતવણી વિના ઇન્સ્ટોલ અને ચાલશે.
પ્રોગ્રામ મેમરીમાં કોન્સ્ટ ઓબ્જેક્ટો કમ્પાઈલર હવે કોન્સ્ટ-ક્વોલિફાઈડ ઓબ્જેક્ટ્સને પ્રોગ્રામ ફ્લેશ મેમરીમાં મૂકી શકે છે, તેને RAM માં સ્થિત રાખવાને બદલે. કમ્પાઈલરમાં ફેરફાર કરવામાં આવ્યો છે જેથી કરીને વિપક્ષ ટી-ક્વોલિફાઈડ વૈશ્વિક ડેટા પ્રોગ્રામ ફ્લેશ મેમરીમાં સંગ્રહિત થાય અને આ ડેટાને યોગ્ય પ્રોગ્રામ-મેમરી સૂચનાઓનો ઉપયોગ કરીને પ્રત્યક્ષ અને પરોક્ષ રીતે એક્સેસ કરી શકાય. આ નવી સુવિધા મૂળભૂત રીતે સક્ષમ છે પરંતુ -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
અચોક્કસ એફએમએ ફંક્શન્સ દૂર કર્યા (XC8-2913) C99 સ્ટાન્ડર્ડ લાઇબ્રેરી fma 0 -ફેમિલી ફંક્શન્સ ( ) એ સિંગલ રાઉન્ડિંગમાં અનંત ચોકસાઇ સાથે ગુણાકાર-ઉમેરોની ગણતરી કરી નથી, પરંતુ તેના બદલે દરેક ઑપરેશન સાથે રાઉન્ડિંગ ભૂલો સંચિત કરી છે. આ વિધેયો પૂરા પાડવામાં આવેલ પુસ્તકાલયમાંથી દૂર કરવામાં આવ્યા છે.
4.2. સંસ્કરણ 2.40
કોઈ નહિ.
4.3. સંસ્કરણ 2.39 (કાર્યકારી સલામતી પ્રકાશન)
કોઈ નહિ.
4.4. સંસ્કરણ 2.36 કોઈ નહીં.
4.5. સંસ્કરણ 2.35
સ્ટ્રિંગ-ટુ બેઝનું હેન્ડલિંગ (XC8-2420) અન્ય XC કમ્પાઇલર્સ સાથે સુસંગતતા સુનિશ્ચિત કરવા માટે, XC8 સ્ટ્રિંગ-ટુ ફંક્શન્સ, જેમ કે strtol () વગેરે, જો ઉલ્લેખિત આધાર 36 કરતા મોટો હોય તો ઇનપુટ સ્ટ્રિંગને કન્વર્ટ કરવાનો પ્રયાસ કરશે નહીં. અને તેના બદલે EINVAL પર errno સેટ કરશે. જ્યારે આ બેઝ વેલ્યુ ઓળંગાઈ જાય ત્યારે C સ્ટાન્ડર્ડ ફંક્શનના વર્તનને સ્પષ્ટ કરતું નથી.
અયોગ્ય ઝડપ ઑપ્ટિમાઇઝેશન લેવલ 3 ઑપ્ટિમાઇઝેશન (-03) પસંદ કરતી વખતે પ્રક્રિયાગત એબ્સ્ટ્રેક્શન ઑપ્ટિમાઇઝેશનને સક્ષમ કરવામાં આવી રહ્યું હતું. આ ઑપ્ટિમાઇઝેશન કોડ સ્પીડના ખર્ચે કોડનું કદ ઘટાડે છે, તેથી કરવામાં આવવું ન જોઈએ. આ ઑપ્ટિમાઇઝેશન લેવલનો ઉપયોગ કરતા પ્રોજેક્ટ્સ જ્યારે આ રિલીઝ સાથે બનાવવામાં આવે ત્યારે કોડના કદ અને અમલની ઝડપમાં તફાવત જોઈ શકે છે.
પુસ્તકાલય કાર્યક્ષમતા સ્ટાન્ડર્ડ C લાઇબ્રેરીના ઘણા ફંક્શન્સ માટેનો કોડ હવે માઇક્રોચિપની યુનિફાઇડ સ્ટાન્ડર્ડ લાઇબ્રેરીમાંથી આવે છે, જે અગાઉની avr-libc લાઇબ્રેરી દ્વારા પૂરી પાડવામાં આવેલી સરખામણીમાં અમુક સંજોગોમાં અલગ વર્તન પ્રદર્શિત કરી શકે છે. માજી માટેampતેથી, ફોર્મેટ ચાલુ કરવા માટે હવે 1printf flt લાઇબ્રેરી (-1printf_flt વિકલ્પ) માં લિંક કરવું જરૂરી નથી. I0 ફ્લોટ-ફોર્મેટ સ્પષ્ટીકરણો માટે આધાર. સ્માર્ટ I0 માઇક્રોચિપ યુનિફાઇડ સ્ટાન્ડર્ડ લાઇબ્રેરીની વિશેષતાઓ આ વિકલ્પને નિરર્થક બનાવે છે. વધુમાં, સ્ટ્રિંગ અને મેમરી ફંક્શન્સ (દા.ત. strcpy_P ( ) વગેરે.) માટે _P પ્રત્યયવાળા રૂટિનનો ઉપયોગ જે ફ્લેશમાં કોન્સ્ટ સ્ટ્રિંગ્સ પર કામ કરે છે તે હવે જરૂરી નથી. સ્ટાન્ડર્ડ C રૂટિન (દા.ત. strcpy ) આવા ડેટા સાથે યોગ્ય રીતે કામ કરશે જ્યારે const-data-in-program-memory સુવિધા સક્ષમ હશે.
4.6. સંસ્કરણ 2.32
કોઈ નહિ.
4.7. સંસ્કરણ 2.31
કોઈ નહિ.
4.8. સંસ્કરણ 2.30
કોઈ નહિ.
4.1. સંસ્કરણ 2.29 (કાર્યકારી સલામતી પ્રકાશન)
કોઈ નહિ.
4.2. સંસ્કરણ 2.20
બદલાયેલ DFP લેઆઉટ કમ્પાઈલર હવે DFPs (ડિવાઈસ ફેમિલી પેક્સ) દ્વારા ઉપયોગમાં લેવાતા અલગ લેઆઉટને ધારે છે. આનો અર્થ એ થશે કે જૂની DFP કદાચ આ પ્રકાશન સાથે કામ કરશે નહીં, અને જૂના કમ્પાઇલરો નવીનતમ DFP નો ઉપયોગ કરી શકશે નહીં.
4.3. સંસ્કરણ 2.19 (કાર્યકારી સલામતી પ્રકાશન)
કોઈ નહિ.
4.4. સંસ્કરણ 2.10
કોઈ નહિ
4.5. સંસ્કરણ 2.05
પ્રોગ્રામ મેમરીમાં કોન્સ્ટ ઑબ્જેક્ટ્સ નોંધ કરો કે બાય ડિફૉલ્ટ, કોન્સ્ટ-ક્વોલિફાઇડ ઑબ્જેક્ટ્સ પ્રોગ્રામ મેમરીમાં મૂકવામાં આવશે અને એક્સેસ કરવામાં આવશે (વર્ણવ્યા પ્રમાણે હ્યુ). આ તમારા પ્રોજેક્ટના કદ અને અમલની ઝડપને અસર કરશે, પરંતુ રેમનો વપરાશ ઘટાડવો જોઈએ. જો જરૂરી હોય તો, -mnoconst-data-in-progmem વિકલ્પનો ઉપયોગ કરીને આ સુવિધાને અક્ષમ કરી શકાય છે.
4.6. સંસ્કરણ 2.00
રૂપરેખાંકન ફ્યુઝ ઉપકરણ રૂપરેખાંકન ફ્યુઝ હવે રૂપરેખા પ્રાગ્માનો ઉપયોગ કરીને પ્રોગ્રામ કરી શકે છે અને ફ્યુઝ સ્થિતિને સ્પષ્ટ કરવા માટે સેટિંગ-વેલ્યુ જોડી દ્વારા અનુસરવામાં આવે છે, દા.ત.
#pragma રૂપરેખા WDTON = SET
#pragma રૂપરેખા BODLEVEL = BODLEVEL_4V3
સંપૂર્ણ પદાર્થો અને કાર્યો ઓબ્જેક્ટો અને કાર્યો હવે CCI (સરનામું) સ્પષ્ટકર્તાનો ઉપયોગ કરીને મેમરીમાં ચોક્કસ સરનામાં પર મૂકી શકાય છે, ભૂતપૂર્વ માટેampલે:
# સમાવેશ થાય છે
int foobar_at(0x800100);
char __at(0x250) getID(int offset) { … }
આ સ્પષ્ટીકરણકર્તા માટે દલીલ હોવી આવશ્યક છે એક સ્થિરાંક જે સરનામું રજૂ કરે છે કે જેના પર પ્રથમ બાઈટ અથવા સૂચના મૂકવામાં આવશે. RAM સરનામાંઓ 0x800000 ના ઑફસેટનો ઉપયોગ કરીને સૂચવવામાં આવે છે. આ સુવિધાનો ઉપયોગ કરવા માટે CCI ને સક્ષમ કરો.
નવું ઇન્ટરપ્ટ ફંક્શન સિન્ટેક્સ કમ્પાઇલર હવે CCI _interrupt (num) સ્પષ્ટકર્તાને સ્વીકારે છે તે દર્શાવવા માટે કે C ફંક્શન્સ ઇન્ટરપ્ટ હેન્ડલર્સ છે. સ્પષ્ટકર્તા ઇન્ટરપ્ટ નંબર લે છે, ઉદાહરણ તરીકેampલે:
# સમાવેશ થાય છે
void __interrupt(SPI_STC_vect_num) spi_Isr(રદબાતલ) { … }
સ્થિર મુદ્દાઓ
નીચેના સુધારાઓ છે જે કમ્પાઈલરમાં કરવામાં આવ્યા છે. આ જનરેટ કરેલા કોડમાં બગ્સને ઠીક કરી શકે છે અથવા કમ્પાઇલરના ઑપરેશનમાં ફેરફાર કરી શકે છે જેનો હેતુ વપરાશકર્તાની માર્ગદર્શિકા દ્વારા નિર્દિષ્ટ કરવામાં આવ્યો હતો. સબહેડિંગ્સમાં વર્ઝન નંબર પ્રથમ કમ્પાઇલર વર્ઝન સૂચવે છે જે અનુસરતા મુદ્દાઓ માટે ફિક્સેસ ધરાવે છે. શીર્ષકમાં કૌંસિત લેબલ (ઓ) ટ્રેકિંગ ડેટાબેઝમાં તે મુદ્દાની ઓળખ છે. જો તમારે સપોર્ટનો સંપર્ક કરવાની જરૂર હોય તો આ ઉપયોગી થઈ શકે છે.
નોંધ કરો કે ઉપકરણ સાથે સંકળાયેલ ઉપકરણ ફેમિલી પેક (DFP) માં કેટલીક ઉપકરણ-વિશિષ્ટ સમસ્યાઓ સુધારવામાં આવી છે. DFP માં થયેલા ફેરફારો વિશેની માહિતી માટે અને નવીનતમ પેક ડાઉનલોડ કરવા માટે MPLAB પેક મેનેજરને જુઓ.
5.1. સંસ્કરણ 2.41
વેન્ચુરા (XC8-3088) ડોંગલ્સ પર ડોંગલ મુદ્દાઓ કમ્પાઈલરને લાઇસન્સ આપવા માટે વપરાયેલ કદાચ મેકઓએસ વેન્ચ્યુરા હોસ્ટ પર યોગ્ય રીતે વાંચવામાં આવ્યું ન હોય, જેના પરિણામે લાઇસન્સિંગ નિષ્ફળતાઓ થાય છે. XCLM લાયસન્સ મેનેજરમાં ફેરફારો આ સમસ્યાને સુધારે છે.
મેમરી ફાળવણીનો ખોટો સંકેત (XC8-2925) પ્રમાણભૂત લાઇબ્રેરી મેમરી મેનેજમેન્ટ ફંક્શન્સ ( malloc () et al) નો ઉપયોગ કરીને મેમરીના SIZE_MAX બાઇટ્સ (અથવા તેની નજીકનું મૂલ્ય) ફાળવવાનો પ્રયાસ ખોટી રીતે સફળ થયો. સરળ ડાયનેમિક મેમરી ફાળવણી અમલીકરણનો ઉપયોગ કરતી વખતે વિનંતી કરાયેલ બ્લોક ઉપરાંત વધારાની બાઈટની જરૂર હતી તે ધ્યાનમાં લેવામાં આવ્યું ન હતું. એક NULL પોઇન્ટર હવે પરત કરવામાં આવશે અને આવી પરિસ્થિતિઓમાં ENOMEM પર સેટ કરવામાં આવશે.
અચોક્કસ એફએમએ કાર્યો દૂર કર્યા (XC8-2913) C99 સ્ટાન્ડર્ડ લાઇબ્રેરી fma ( ) -કુટુંબ કાર્યો ( ) એ સિંગલ રાઉન્ડિંગમાં અનંત ચોકસાઇ સાથે ગુણાકાર-ઉમેરોની ગણતરી કરી નથી, પરંતુ તેના બદલે દરેક ઑપરેશન સાથે રાઉન્ડિંગ ભૂલો સંચિત કરી છે. આ વિધેયો પૂરા પાડવામાં આવેલ પુસ્તકાલયમાંથી દૂર કરવામાં આવ્યા છે.
સ્ટ્રિંગ કન્વર્ઝનનું ખરાબ હેન્ડલિંગ (XC8-2921, XC8-2652) જ્યારે સ્ટ્રટોડ સીઆર દ્વારા રૂપાંતર માટેના 'વિષય ક્રમ'માં ઘાતાંકીય ફોર્મેટમાં ફ્લોટિંગ-પોઇન્ટ નંબર જે દેખાય છે તે સમાવિષ્ટ હતું અને e/E અક્ષર પછી એક અનપેક્ષિત અક્ષર હતો, પછી જ્યાં endptr પ્રદાન કરવામાં આવ્યું હતું, તેને એક સરનામું સોંપવામાં આવ્યું હતું કે તે e/E પછી અક્ષર તરફ નિર્દેશ કરે છે, જ્યારે તે e/E અક્ષર તરફ જ નિર્દેશ કરતું હોવું જોઈએ, કારણ કે તે રૂપાંતરિત થયું ન હતું. માજી માટેample, strtod (“100exx”, &ep) એ 100.00 પરત કરવું જોઈએ અને સ્ટ્રીંગના “exx” ભાગ તરફ નિર્દેશ કરવા માટે ep સેટ કરવું જોઈએ, જ્યારે ફંક્શન યોગ્ય મૂલ્ય પાછું આપી રહ્યું હતું પરંતુ ep સેટિંગ સ્ટ્રિંગના “xx” ભાગ તરફ નિર્દેશ કરે છે. .
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 રજિસ્ટર કન્ફિગરેશન ચેન્જ પ્રોટેક્શન (સીસીપી) હેઠળ હતું અને કોન્સ્ટ-ડેટા-ઇન-કોન્ફિગમેપ્ડ-પ્રોગમેમ દ્વારા ઉપયોગમાં લેવાતા પૃષ્ઠ પર I0 SFR સેટ કરવામાં સક્ષમ ન હતું. કમ્પાઇલર લક્ષણ. AVR-Ex_DFP સંસ્કરણ 2.2.55 માં કરેલા ફેરફારો રનટાઇમ સ્ટાર્ટઅપ કોડને આ રજિસ્ટર પર યોગ્ય રીતે લખવાની મંજૂરી આપશે.
ટાળવા માટે DFP ફેરફારો ફ્લેશ મેપિંગ (XC8-2847) AVR128DA28/32/48/64 સિલિકોન ત્રુટિસૂચી (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-બીટ ( memx પ્રકાર) પોઈન્ટર્સ પસાર થવાની અપેક્ષા રાખે છે. દલીલો કે જે ડેટા મેમરીના નિર્દેશક હતા તે 16-બીટ ઑબ્જેક્ટ તરીકે પસાર કરવામાં આવી રહ્યા હતા, જેના કારણે કોડ નિષ્ફળતા થઈ જ્યારે તેઓ આખરે વાંચવામાં આવ્યા. જ્યારે કોન્સ્ટડેટા-ઇન-પ્રોગ્મેમ લક્ષણ સક્ષમ હોય, ત્યારે તમામ 16-બીટ પોઇન્ટર દલીલો હવે 24-બીટ પોઇન્ટરમાં રૂપાંતરિત થાય છે.
strtoxxx લાઇબ્રેરી ફંક્શન્સ નિષ્ફળ (XC8-2620) જ્યારે const-data-in-progmem સુવિધા સક્ષમ હતી, strtoxxx લાઇબ્રેરી ફંક્શન્સમાં endptr પેરામીટર પ્રોગ્રામ મેમરીમાં ન હોય તેવા સ્ત્રોત સ્ટ્રિંગ દલીલો માટે યોગ્ય રીતે અપડેટ કરવામાં આવ્યું ન હતું.
અમાન્ય કાસ્ટ માટે ચેતવણીઓ (XC8-2612) કમ્પાઈલર હવે ભૂલ રજૂ કરશે જો કોન્સ્ટ-ઇન-પ્રોગ્મેમ સુવિધા સક્ષમ હોય અને સ્ટ્રિંગ લિટરલનું સરનામું સ્પષ્ટપણે ડેટા એડ્રેસ સ્પેસ પર કાસ્ટ કરવામાં આવ્યું હોય (કોન્સ્ટ ક્વોલિફાયર છોડીને), ભૂતપૂર્વ માટેample, (uint 8_t *) “હેલો વર્લ્ડ!”. જો કોન્સ્ટ ડેટા પોઇન્ટર ડેટા એડ્રેસ સ્પેસ પર સ્પષ્ટપણે કાસ્ટ કરવામાં આવે ત્યારે એડ્રેસ અમાન્ય હોઈ શકે તો ચેતવણી એક મુદ્દો છે.
બિનપ્રારંભિક કોન્સ્ટ ઑબ્જેક્ટનું પ્લેસમેન્ટ (XC8-2408) અપ્રારંભિક કોન્સ્ટ અને કોન્સ્ટ વોલેટાઈલ ઓબ્જેક્ટો એવા ઉપકરણો પર પ્રોગ્રામ મેમરીમાં મૂકવામાં આવતા ન હતા જે તેમની પ્રોગ્રામ મેમરીનો આખો ભાગ અથવા ડેટા એડ્રેસ સ્પેસમાં મેપ કરે છે. આ ઉપકરણો માટે, આવા ઑબ્જેક્ટ્સ હવે પ્રોગ્રામ મેમરીમાં મૂકવામાં આવે છે, જે તેમની કામગીરીને અન્ય ઉપકરણો સાથે સુસંગત બનાવે છે.
5.3. સંસ્કરણ 2.39 (કાર્યકારી સલામતી પ્રકાશન)
કોઈ નહિ.
5.4. સંસ્કરણ 2.36
વિલંબ કરતી વખતે ભૂલ (XC8-2774) ડિફૉલ્ટ ફ્રી મોડ ઑપ્ટિમાઇઝેશનમાં નાના ફેરફારોએ બિલ્ટ-ઇન ફંક્શન્સમાં વિલંબમાં ઑપરેન્ડ એક્સપ્રેશનના સતત ફોલ્ડિંગને અટકાવ્યું, પરિણામે તેમને બિન-અચલ તરીકે ગણવામાં આવે છે અને ભૂલને ટ્રિગર કરે છે: બિલ્ટિન 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__((section(“.mysec”))) = {0xEF, 0xFE};
arr2 પછી તરત જ arr1 મૂકવો જોઈએ.
વિભાગના પ્રારંભ સરનામાંનો ઉલ્લેખ કરવો (XC8-2650) The -W1, -સેક્શન-સ્ટાર્ટ વિકલ્પ નામાંકિત શરૂઆતના સરનામા પર વિભાગો મૂકવા માટે ચૂપચાપ નિષ્ફળ રહ્યો હતો. આ સમસ્યા કોઈપણ કસ્ટમ નામવાળા વિભાગો માટે ઠીક કરવામાં આવી છે; જો કે, તે કોઈપણ પ્રમાણભૂત વિભાગો માટે કામ કરશે નહીં, જેમ કે. ટેક્સ્ટ અથવા. bss, જે -W1, -T વિકલ્પનો ઉપયોગ કરીને મૂકવો આવશ્યક છે.
જ્યારે આરામ કરતી વખતે લિંકર ક્રેશ થાય છે (XC8-2647) જ્યારે -mrelax ઑપ્ટિમાઇઝેશન સક્ષમ હતું અને ત્યાં કોડ અથવા ડેટા વિભાગો હતા જે ઉપલબ્ધ મેમરીમાં બંધબેસતા ન હતા, લિંકર ક્રેશ થયું હતું. હવે આવા સંજોગોમાં તેના બદલે એરર મેસેજ જારી કરવામાં આવે છે.
નો નો-ફોલિંગ-બેક (XC8-2646) ધ -nofallback વિકલ્પ યોગ્ય રીતે અમલમાં આવ્યો ન હતો, ન તો દસ્તાવેજીકરણ. જો કમ્પાઇલર લાઇસન્સ વિનાનું હોય તો કમ્પાઇલર નીચા ઓપ્ટિમાઇઝેશન સેટિંગમાં પાછા ન આવે તેની ખાતરી કરવા માટે હવે આને પસંદ કરી શકાય છે, અને તેના બદલે ભૂલ રજૂ કરશે.
અયોગ્ય સ્પીડ ઑપ્ટિમાઇઝેશન (X03-2637) લેવલ 3 ઑપ્ટિમાઇઝેશન (-03) પસંદ કરતી વખતે પ્રક્રિયાગત એબ્સ્ટ્રેક્શન ઑપ્ટિમાઇઝેશનને સક્ષમ કરવામાં આવી રહ્યું હતું. આ ઑપ્ટિમાઇઝેશન કોડ સ્પીડના ખર્ચે કોડનું કદ ઘટાડે છે, તેથી કરવામાં આવવું ન જોઈએ.
ખરાબ EEPROM પ્રવેશ (XC8-2629) ધ eeprom_read_block રૂટિન Xmega ઉપકરણો પર યોગ્ય રીતે કામ કરતું ન હતું જ્યારે -mconst-data-in-progmem વિકલ્પ સક્રિય કરવામાં આવ્યો હતો (જે ડિફોલ્ટ સ્થિતિ છે), પરિણામે EEPROM મેમરી યોગ્ય રીતે વાંચવામાં આવતી નથી.
અમાન્ય મેમરી ફાળવણી (XC8-2593, XC8-2651) જ્યારે -Ttext અથવા -Tdata લિંકર વિકલ્પ (દા.તample એ -vl ડ્રાઇવર વિકલ્પનો ઉપયોગ કરીને પસાર થાય છે) ઉલ્લેખિત છે, અનુરૂપ ટેક્સ્ટ/ડેટા ક્ષેત્ર મૂળ અપડેટ કરવામાં આવ્યું હતું; જો કે, અંતિમ સરનામું તે મુજબ એડજસ્ટ કરવામાં આવ્યું ન હતું, જેના કારણે પ્રદેશ લક્ષ્ય ઉપકરણની મેમરી રેન્જને ઓળંગી શકે છે.
ઓવર-એટ્રિબ્યુટેડ ફંક્શન સાથે ક્રેશ (XC8-2580) કમ્પાઈલર ક્રેશ થઈ જાય છે જો કોઈ ફંક્શન એક કરતાં વધુ ઈન્ટરપ્ટ, સિગ્નલ અથવા nmi એટ્રિબ્યુટ્સનો ઉપયોગ કરીને જાહેર કરવામાં આવ્યું હોય, દા.ત., એટ્રિબ્યુટ ( ( સિગ્નલ , ઈન્ટરપ્ટ ) ).
અમાન્ય ATtiny ઇન્ટરપ્ટ કોડ (XC8-2465) જ્યારે ATtiny ઉપકરણો અને ઑપ્ટિમાઇઝેશન્સ અક્ષમ કરવામાં આવ્યાં હતાં (-00), ત્યારે ઇન્ટરપ્ટ ફંક્શન્સે ઓપરેન્ડને રેન્જ એસેમ્બલર સંદેશાઓની બહાર ટ્રિગર કરી શકે છે.
વિકલ્પો પસાર થતા નથી (XC8-2452) બહુવિધ, અલ્પવિરામથી વિભાજિત લિંકર વિકલ્પો સાથે વિકલ્પનો ઉપયોગ કરતી વખતે, બધા લિંકર વિકલ્પો લિંકરને પસાર કરવામાં આવતા ન હતા.
પ્રોગ્રામ મેમરી (X03-2450) વાંચવામાં પરોક્ષ રીતે ભૂલ કેટલાક કિસ્સાઓમાં, કમ્પાઈલરે પોઈન્ટરથી પ્રોગ્રામ મેમરીમાં બે બાઈટ વેલ્યુ વાંચતી વખતે આંતરિક ભૂલ (ઓળખી ન શકાય તેવી insn) પેદા કરી હતી.
5.6. સંસ્કરણ 2.32
ની બીજી ઍક્સેસ લાઇબ્રેરી નિષ્ફળ જાય છે (XC8-2381) xc8-ar ના વિન્ડોઝ વર્ઝનનો ઉપયોગ કરવો. અસ્તિત્વમાંના લાઇબ્રેરી આર્કાઇવને ઍક્સેસ કરવા માટે બીજી વખત .exe લાઇબ્રેરી આર્કાઇવર ભૂલ સંદેશનું નામ બદલવામાં અસમર્થતા સાથે નિષ્ફળ થઈ શકે છે.
5.7. સંસ્કરણ 2.31
અસ્પષ્ટ કમ્પાઇલર નિષ્ફળતાઓ (XC8-2367) જ્યારે વિન્ડોઝ પ્લેટફોર્મ્સ પર ચાલી રહ્યું હોય કે જેમાં સિસ્ટમ અસ્થાયી ડિરેક્ટરી એવા પાથ પર સેટ હોય જેમાં ડોટ '.' શામેલ હોય. અક્ષર, કમ્પાઈલર ચલાવવામાં નિષ્ફળ થઈ શકે છે.
5.8. સંસ્કરણ 2.30
વૈશ્વિક લેબલ્સ રૂપરેખા (XC8-2299) પછી ખોવાઈ ગયા હાથથી લખાયેલ એસેમ્બલી કોડ કે જે એસેમ્બલી સિક્વન્સમાં વૈશ્વિક લેબલ્સ મૂકે છે જે પ્રક્રિયાગત અમૂર્તતા દ્વારા પરિબળ છે તે કદાચ યોગ્ય રીતે સ્થાનાંતરિત કરવામાં આવ્યું નથી.
એક રિલેક્સિંગ ક્રેશ (XC8-2287) -mrelax વિકલ્પનો ઉપયોગ કરવાથી લિંકર ક્રેશ થવાનું કારણ બની શકે છે જ્યારે ટેલ જમ્પ રિલેક્સેશન ઑપ્ટિમાઇઝેશને વિભાગના અંતે ન હોય તેવા ret સૂચનાને દૂર કરવાનો પ્રયાસ કર્યો હતો.
લેબલ્સને મૂલ્યો તરીકે ઑપ્ટિમાઇઝ કરતી વખતે ક્રેશ (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) AVR લિંકર avrxmega3 અને avrtiny આર્કિટેક્ચર્સ માટે નિર્માણ કરતી વખતે કસ્ટમ રોડેટા વિભાગો માટે મેમરી સોંપવામાં નિષ્ફળ થયું, સંભવિત રીતે મેમરી ઓવરલેપ ભૂલો ઉત્પન્ન કરે છે
5.3. સંસ્કરણ 2.19 (કાર્યકારી સલામતી પ્રકાશન)
કોઈ નહિ.
5.4. સંસ્કરણ 2.10
સ્થાનાંતરણ નિષ્ફળતાઓ (XC8-1891) લિન્કર છૂટછાટ પછી સેક્શનની વચ્ચે મેમરી 'છિદ્રો' છોડીને શ્રેષ્ઠ ફિટ એલોકેટર હતું. ફ્રેગમેન્ટિંગ મેમરી સિવાય, આનાથી પીસી-રિલેટિવ જમ્પ્સ અથવા કૉલ્સ રેન્જની બહાર થઈ જવા સંબંધિત લિંકર રિલોકેશન નિષ્ફળતાઓની શક્યતા વધી ગઈ છે.
છૂટછાટ દ્વારા રૂપાંતરિત ન થયેલી સૂચનાઓ (XC8-1889) જમ્પ અથવા કૉલ સૂચનાઓ માટે લિંકર છૂટછાટ આવી ન હતી જેના લક્ષ્યો હળવા થવા પર પહોંચી શકાય છે.
ખૂટે છે કાર્યક્ષમતા (XC8E-388) માંથી કેટલીક વ્યાખ્યાઓ , જેમ કે clock_div_t અને clock_prescale સેટ () , ATmega324PB, ATmega328PB, ATtiny441 અને ATtiny841 સહિતના ઉપકરણો માટે વ્યાખ્યાયિત કરવામાં આવ્યાં નથી.
મેક્રો ખૂટે છે પ્રીપ્રોસેસર મેક્રો _XC8_MODE_, _XC8_VERS ION, _XC, અને _XC8 કમ્પાઇલર દ્વારા આપમેળે વ્યાખ્યાયિત કરવામાં આવ્યાં નથી. આ હવે ઉપલબ્ધ છે.
5.5. સંસ્કરણ 2.05
આંતરિક કમ્પાઇલર ભૂલ (XC8-1822) વિન્ડોઝ હેઠળ બિલ્ડ કરતી વખતે, કોડ ઑપ્ટિમાઇઝ કરતી વખતે આંતરિક કમ્પાઇલર ભૂલ ઉત્પન્ન થઈ શકે છે.
રેમ ઓવરફ્લો શોધાયેલ નથી (XC8-1800, XC8-1796) પ્રોગ્રામ્સ કે જે ઉપલબ્ધ RAM કરતાં વધી ગયા છે તે કમ્પાઇલર દ્વારા કેટલીક પરિસ્થિતિઓમાં શોધવામાં આવ્યા ન હતા, પરિણામે રનટાઇમ કોડ નિષ્ફળતામાં પરિણમે છે.
છોડેલી ફ્લેશ મેમરી (XC8-1792) avrxmega3 અને avrtiny ઉપકરણો માટે, ફ્લેશ મેમરીના ભાગો MPLAB X દ્વારા અન-પ્રોગ્રામ કરેલા છોડી દેવામાં આવ્યા હશે. IDE.
મુખ્ય ચલાવવામાં નિષ્ફળતા (XC8-1788) કેટલીક પરિસ્થિતિઓમાં જ્યાં પ્રોગ્રામમાં કોઈ વૈશ્વિક ચલો વ્યાખ્યાયિત ન હતા, રનટાઇમ સ્ટાર્ટઅપ કોડ બહાર નીકળ્યો ન હતો અને મુખ્ય ( ) ફંક્શન ક્યારેય પહોંચી શક્યું ન હતું.
ખોટી મેમરી માહિતી (XC8-1787) avrxmega3 અને avrtiny ઉપકરણો માટે, avr-સાઇઝ પ્રોગ્રામ રિપોર્ટ કરી રહ્યો હતો કે પ્રોગ્રામ મેમરીને બદલે ફક્ત વાંચવા માટેનો ડેટા RAM નો ઉપયોગ કરી રહ્યો છે.
ખોટી પ્રોગ્રામ મેમરી રીડ (XC8-1783) ડેટા એડ્રેસ સ્પેસમાં મેપ કરેલ પ્રોગ્રામ મેમરી સાથેના ઉપકરણો માટે કમ્પાઈલ કરાયેલ પ્રોજેક્ટ્સ અને જે PROGMEM મેક્રો/એટ્રિબ્યુટનો ઉપયોગ કરીને ઑબ્જેક્ટ્સને વ્યાખ્યાયિત કરે છે તે આ ઑબ્જેક્ટ્સને ખોટા સરનામાં પરથી વાંચી શકે છે.
વિશેષતાઓ સાથે આંતરિક ભૂલ (XC8-1773) જો તમે પોઇન્ટર ઑબ્જેક્ટને સાથે વ્યાખ્યાયિત કર્યું હોય તો આંતરિક ભૂલ આવી
_at() અથવા એટ્રિબ્યુટ() ટોકન્સ પોઇન્ટર નામ અને સંદર્ભિત પ્રકાર વચ્ચે, ભૂતપૂર્વ માટેampલે, ચાર*
_at (0x800150) cp; જો આવા કોડનો સામનો કરવો પડે તો હવે ચેતવણી જારી કરવામાં આવે છે.
મુખ્ય ચલાવવામાં નિષ્ફળતા (XC8-1780, XC8-1767, XC8-1754) EEPROM ચલોનો ઉપયોગ કરવો અથવા રૂપરેખા પ્રાગ્માનો ઉપયોગ કરીને ફ્યુઝને વ્યાખ્યાયિત કરવાથી મુખ્ય ( ) સુધી પહોંચતા પહેલા, રનટાઇમ સ્ટાર્ટઅપ કોડમાં ખોટો ડેટા આરંભ અને/અથવા લૉક અપ પ્રોગ્રામ એક્ઝેક્યુશન થઈ શકે છે.
નાના ઉપકરણો સાથે ફ્યુઝ ભૂલ (XC8-1778, XC8-1742) એટીની 4/5/9/ 10/20/40 ઉપકરણોમાં તેમના હેડરમાં ખોટી ફ્યુઝ લંબાઈનો ઉલ્લેખ કરવામાં આવ્યો હતો files જે ફ્યુઝને વ્યાખ્યાયિત કરતા કોડ બનાવવાનો પ્રયાસ કરતી વખતે લિંકર ભૂલો તરફ દોરી જાય છે.
વિભાજન ફોલ્ટ (XC8-1777) એક તૂટક તૂટક વિભાજન ખામી સુધારેલ છે.
એસેમ્બલર ક્રેશ (XC8-1761) જ્યારે ઉબુન્ટુ 18 હેઠળ કમ્પાઈલર ચલાવવામાં આવ્યું ત્યારે avr-as એસેમ્બલર ક્રેશ થઈ શકે છે.
ઑબ્જેક્ટ્સ સાફ નથી (XC8-1752) રનટાઇમ સ્ટાર્ટઅપ કોડ દ્વારા અપ્રારંભ ન કરાયેલ સ્ટેટિક સ્ટોરેજ અવધિના ઑબ્જેક્ટ્સ કદાચ ક્લિયર ન થયા હોય.
વિરોધાભાસી ઉપકરણ સ્પષ્ટીકરણ અવગણવામાં આવ્યું (XC8-1749) જ્યારે બહુવિધ ઉપકરણ સ્પષ્ટીકરણ વિકલ્પોનો ઉપયોગ કરવામાં આવ્યો હતો અને વિવિધ ઉપકરણો સૂચવવામાં આવ્યા હતા ત્યારે કમ્પાઇલર ભૂલ પેદા કરતું ન હતું.
ઢગલા દ્વારા મેમરી ભ્રષ્ટાચાર (XC8-1748) ધ _heap_start ચિહ્ન ખોટી રીતે સેટ કરવામાં આવ્યું હતું, પરિણામે સામાન્ય ચલો ઢગલા દ્વારા દૂષિત થવાની શક્યતા છે.
લિંકર રિલોકેશન એરર (XC8-1739) જ્યારે કોડમાં 4k બાઇટ્સ દૂરના લક્ષ્ય સાથે rjmp અથવા rcall હોય ત્યારે લિંકર રિલોકેશન ભૂલ ઉત્સર્જિત થઈ શકે છે.
5.6. સંસ્કરણ 2.00
કોઈ નહિ.
જાણીતા મુદ્દાઓ
કમ્પાઈલરની કામગીરીમાં નીચેની મર્યાદાઓ છે. આ સામાન્ય કોડિંગ પ્રતિબંધો અથવા વપરાશકર્તાના માર્ગદર્શિકામાં સમાવિષ્ટ માહિતીમાંથી વિચલનો હોઈ શકે છે. શીર્ષકમાં કૌંસિત લેબલ (ઓ) ટ્રેકિંગ ડેટાબેઝમાં તે મુદ્દાની ઓળખ છે. જો તમારે સપોર્ટનો સંપર્ક કરવાની જરૂર હોય તો આ ફાયદાકારક હોઈ શકે છે. જે વસ્તુઓમાં લેબલ નથી તે મર્યાદાઓ છે જે મોદી ઓપરેન્ડીનું વર્ણન કરે છે અને જે કાયમી ધોરણે અમલમાં રહેવાની શક્યતા છે.
6.1. MPLAB X IDE એકીકરણ
MPLAB IDE એકીકરણ જો MPLAB IDE માંથી કમ્પાઈલરનો ઉપયોગ કરવો હોય, તો તમારે કમ્પાઈલર ઈન્સ્ટોલ કરતા પહેલા MPLAB IDE ઈન્સ્ટોલ કરવું પડશે.
6.2. કોડ જનરેશન
સેક્શન-એન્કર્સ વિકલ્પ (XC8-3045) પ્રોગ્રામ સાથે સેગફોલ્ટ કે જે વેરિયેબલ આર્ગ્યુમેન્ટ લિસ્ટ સાથે કાર્યોને વ્યાખ્યાયિત કરે છે અને જે -fsection-anchors વિકલ્પનો ઉપયોગ કરે છે તે આંતરિક કમ્પાઇલર ભૂલને ટ્રિગર કરી શકે છે: સેગમેન્ટેશન ફોલ્ટ.
ડીબગ માહિતી સમન્વયનની બહાર (XC8-2948) જ્યારે લિંકર રિલેક્સેશન ઑપ્ટિમાઇઝેશન સૂચનાઓને સંકોચાય છે (દા.તample call to rcall instructions), જ્યારે વિભાગમાં એક કરતાં વધુ સંકોચાઈ કામગીરી થતી હોય ત્યારે મેપિંગ્સને સંબોધિત કરવા માટેની સ્ત્રોત લાઇન સુમેળમાં ન રહી શકે.
નીચે માજીample, foo માટે બે કૉલ્સ છે જે સંબંધિત કૉલ્સમાં આરામ આપે છે.
PA મેમરી ફાળવણી નિષ્ફળતા (XC8-2881) પ્રક્રિયાગત એબ્સ્ટ્રેક્શન ઑપ્ટિમાઇઝર્સનો ઉપયોગ કરતી વખતે, જ્યારે કોડનું કદ ઉપકરણ પર ઉપલબ્ધ પ્રોગ્રામ મેમરીની માત્રાની નજીક હોય ત્યારે લિંકર મેમરી ફાળવણીની ભૂલોની જાણ કરી શકે છે, તેમ છતાં પ્રોગ્રામ ઉપલબ્ધ જગ્યામાં ફિટ થવા માટે સક્ષમ હોવો જોઈએ.
એટલું સ્માર્ટ સ્માર્ટ-I0 (XC8-2872) નથી જો કોન્સ્ટ-ડેટા-ઇન-પ્રોગ્મેમ સુવિધા નિષ્ક્રિય કરવામાં આવી હોય અથવા જો ઉપકરણમાં તેની તમામ ફ્લેશ ડેટા મેમરીમાં મેપ કરેલી હોય તો કમ્પાઈલરની સ્માર્ટ-io સુવિધા snprint f ફંક્શન માટે માન્ય પરંતુ સબ-ઑપ્ટિમલ કોડ જનરેટ કરશે.
તેનાથી પણ ઓછા સ્માર્ટ Smart-I0 (XC8-2869) જ્યારે -flto અને -fno-બિલ્ટિન બંને વિકલ્પોનો ઉપયોગ કરવામાં આવે ત્યારે કમ્પાઈલરની સ્માર્ટ-io સુવિધા માન્ય પરંતુ સબઓપ્ટીમલ કોડ જનરેટ કરશે.
સબઓપ્ટીમલ રીડ-ઓન્લી ડેટા પ્લેસમેન્ટ (XC8-2849) લિંકર હાલમાં APPCODE અને APPDATA મેમરી વિભાગોથી વાકેફ નથી, તેમજ મેમરી નકશામાં [નો-વાંચતા-લખો-લખો વિભાગો વિશે પણ જાણતા નથી. પરિણામે, ત્યાં એક નાની તક છે કે લિંકર મેમરીના અયોગ્ય વિસ્તારમાં ફક્ત વાંચવા માટેનો ડેટા ફાળવી શકે છે. જો const-data-in-progmem સુવિધા સક્ષમ હોય તો ખોટો ડેટાની તક વધે છે, ખાસ કરીને જો const-data-in-config-mapped-progmem સુવિધા પણ સક્ષમ હોય. જો જરૂરી હોય તો આ સુવિધાઓને અક્ષમ કરી શકાય છે.
ઑબ્જેક્ટ file પ્રોસેસિંગ ઓર્ડર (XC8-2863) જે ક્રમમાં વસ્તુઓ files ની પ્રક્રિયા લિંકર દ્વારા કરવામાં આવશે પ્રક્રિયાગત એબ્સ્ટ્રેક્શન ઓપ્ટિમાઇઝેશન (-mpa વિકલ્પ) ના ઉપયોગના આધારે અલગ હોઈ શકે છે. આ ફક્ત કોડને અસર કરશે જે બહુવિધ મોડ્યુલોમાં નબળા કાર્યોને વ્યાખ્યાયિત કરે છે.
સંપૂર્ણ (XC8-2777) સાથે લિંકર ભૂલ જ્યારે RAM ની શરૂઆતમાં સરનામાં પર ઑબ્જેક્ટ નિરપેક્ષ બનાવવામાં આવે છે અને બિન-પ્રારંભિક ઑબ્જેક્ટ પણ વ્યાખ્યાયિત કરવામાં આવે છે, ત્યારે લિંકર ભૂલ ટ્રિગર થઈ શકે છે.
શોર્ટ વેક-અપ ID (XC8-2775) ATA5700/2 ઉપકરણો માટે, PHIDO/1 રજિસ્ટરને 16 બિટ્સ પહોળા કરતાં માત્ર 32 બિટ્સ પહોળા તરીકે વ્યાખ્યાયિત કરવામાં આવે છે.
સિમ્બોલ (XC8-2758) કૉલ કરતી વખતે લિંકર ક્રેશ લિંકર ક્રેશ થઈ શકે છે જો -mrelax ડ્રાઈવર વિકલ્પનો ઉપયોગ કરવામાં આવે જ્યારે સ્ત્રોત કોડ પ્રતીકને કૉલ કરે છે કે જે -cc., –de f sym લિંકર વિકલ્પની મદદથી વ્યાખ્યાયિત થયેલ છે.
અયોગ્ય આરંભ (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, જે પછી અમાન્ય આઉટપુટ તરફ દોરી શકે છે. 'સ્પેક' files વિતરિત DFPs સાથે અદ્યતન ન હોઈ શકે અને તે ફક્ત આંતરિક કમ્પાઇલર પરીક્ષણ સાથે ઉપયોગ કરવા માટે બનાવાયેલ છે.
મેમરી ઓવરલેપ શોધાયેલ નથી (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
દસ્તાવેજો / સંસાધનો
![]() |
MICROCHIP MPLAB XC8 C કમ્પાઇલર ડેવલપમેન્ટ સોફ્ટવેર [પીડીએફ] માલિકનું માર્ગદર્શિકા MPLAB XC8 C, MPLAB XC8 C કમ્પાઈલર ડેવલપમેન્ટ સોફ્ટવેર, કમ્પાઈલર ડેવલપમેન્ટ સોફ્ટવેર, ડેવલપમેન્ટ સોફ્ટવેર, સોફ્ટવેર |