IAR 擴展關(guān)鍵字
1.擴展關(guān)鍵字:用于控制數(shù)據(jù)和指針
__eeprom用于EEPROM 存儲空間, 控制數(shù)據(jù)存放,控制指針類型和存放
__tinyflash, __flash, __farflash, __hugeflash用于flash 存儲空間, 控制數(shù)據(jù)存放,控制指針類型和存放
__ext_io, __io用于I/O存儲空間, 控制數(shù)據(jù)存放,控制指針類型和存放
__regvar放置一個變量在工作寄存器中
2.函數(shù)擴展關(guān)鍵字:
__nearfunc __farfunc用于控制數(shù)據(jù)存放,這組關(guān)鍵字必須在函數(shù)聲明和定義的時候指定
__interrupt.關(guān)鍵字控制函數(shù)的類型。這組關(guān)鍵字必須在函數(shù)聲明和定義的時候指定
__root.關(guān)鍵字僅僅控制有定義的函數(shù)
3.其它特別的關(guān)鍵字:
@用于變量的絕對地址定位。也可以用#pragma location 命令
#pragma vector提供中斷函數(shù)的入口地址。
__root保證沒有使用的函數(shù)或者變量也能夠包含在目標代碼中
__no_init禁止系統(tǒng)啟動的時候初始化變量.
asm, __asm插入?yún)R編代碼
====================================================================
__root 關(guān)鍵字保證沒有使用的函數(shù)或者變量也能夠包含在目標代碼中.
定義存放在__flash 空間的數(shù)據(jù)在程序編譯時會自動生成代碼嵌入到flash代碼中,對于程序沒有使用也要求編譯的數(shù)據(jù)(比如可以在代碼中嵌入你的版本號,時間等)必須加關(guān)鍵字__root 限制。
例:
#include__root__flashunsignedcharp@0x10=0x56;voidmain(void){}
程序沒有使用P變量,編譯也會生成該代碼。:020000020000FC:1000000016C018951895189518951895189518955F:10001000569518951895189518951895189518953A:10002000189518951895089500008895FECF0FE94A:100030000DBF00E00EBFC0E8D0E003D0F4DFF4DF76:06004000F3CF01E008957A:0400000300000000F9:00000001FF