AREA ARMex, CODE, READONLY ;Name this block of code ARMex
ENTRY ;Mark first instruction to execute
start
MOV r0, #10 ; Set up parameters
MOV r1, #3
ADD r0, r0, r1 ; r0 = r0 + r1
stop
MOV r0, #0x18 ; angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SVC #0x123456 ; ARM semihosting (formerly SWI)
END ; Mark end of file
我們可以發現第一行就指定了這個section的名子,叫做ARMex。第一個AREA的意思是表示一個section
的開始,除了明子以外,還會設定這個section的屬性。名子基本上可以隨便取,可是如果不是英文字母開頭的話,就要用兩個bar把它包起來,好比說|1_DataArea|。不然的話會有AREA name missing的錯誤。
ENTRY跟AREA一樣,都是directive,顧名思義是說明一個section的開始,後面的END相對應的就是說明一個section的結束。
start和stop都是function的label。
如果是在C code裡面的話
就是 #pragma arm section [code、rwdata、rodata、zidata] = "label"
沒有留言:
張貼留言