一、EQU:等價語句
AREA 命令指示匯編程序匯編一個新的代碼段或數據段。段是獨立的、指定的、不可見的代碼或數據塊,它們由鏈接程序處理。
語法: AREA sectionname{,attr}{,attr}...
其中:
sectionname:將要指定的段名。
可以為段選擇任何段名。但是,以一個數字開始的名稱必須包含在豎杠號內,否則會產生一個缺失段名錯誤。例如,|1_DataArea|。 有些名稱是習慣性的名稱。例如,|.text| 用於表示由 C 編譯程序產生的代碼段,或用於以某種方式與 C 庫關聯的代碼段。
attr:一個或多個用逗號分隔的段屬性。有效的屬性是:
ALIGN=expression
默認情況下,ELF 段在四字節邊界上對齊。expression 可以擁有 0 到 31 的任何整數。段在 2expression 字節邊界上對齊。例如,如果 expression 是 10,則段是在 1KB 邊界上對齊。這與 ALIGN 命令所指定的方式並不相同。
ASSOC=section
section 指定一個關聯的 ELF 段。sectionname必須包含在含有 section 的任何鏈接中。
CODE
包含機器指令。READONLY 是默認值。
COMDEF
是一個公共段定義。這是包含代碼或數據的 ELF 段。其必須等同於與其它源文件中擁有相同名稱的任何其它段須是同一段。擁有相同名稱的同一 ELF 段在存儲器的相同段中被鏈接程序覆蓋。如果有任何段不同,則鏈接程序產生一個警告,並且不覆蓋這些段。請參閱RealView 編譯工具 2.0 版鏈接程序和實用程序指南 中的鏈接程序 一章。
COMMON
是公共數據段。不能在其中定義任何代碼或數據。其由 鏈接程序初始化為零。擁有相同名稱的所有公共段在存 儲器的相同段中被鏈接程序覆蓋。它們並不都需要具有 相同的大小。鏈接程序按每個名稱的最大公共段的需要 分配空間。
DATA
包含數據但不含指令。READWRITE 是默認值。
NOALLOC
表示在目標系統上沒有為此 AREA 分配存儲器。
NOINIT
表示數據段是未初始化的或初始化為零。其只包含零初始化的空間保留命令 SPACE 或 DCB、DCD、DCDU、DCQ、DCQU、DCW 或 DCWU。可以決定在鏈接時 AREA 是未初始化的還是零初始化的(請參閱RealView 編譯工具 2.0 版鏈接程序和實用程序指南 中的鏈接程序 一章)。
READONLY
表示不能寫到此段中。這是代碼區域的默認情況。
READWRITE
表示可以讀和寫此段。這是數據區域的默認情況
三、