(1)b,bl:相對跳轉(zhuǎn)指令??商D(zhuǎn)范圍是當前指令的前后32MB。
(2)mov,ldr,str:mov比較熟悉,就是賦值。ldr本意為“大范圍的地址讀取偽指令”。str為存儲指令。
COUNTEQU0x40003100
……
LDR R1,=COUNT
MOVR0,#0
STRR0,[R1]
COUNT是一個數(shù)值,為0x40003100。
LDRR1,=COUNT是讀取COUNT的值并賦值給R1,即R1存放的是地址0x40003100.
MOVR0,#0是將立即數(shù)0放到R0中。
STRR0,[R1]是一個典型的存儲指令,將R0中的值放到以R1中的值為地址的存儲單元去。實際就是將0放到地址為0x40003100的存儲單元中去。
再舉一個例子:
ldr r1,[r2]@將地址為r2的內(nèi)存單元里的數(shù)據(jù)讀取到r1中
ldr r1,[r2,#4]@將地址為r2+4的內(nèi)存單元里的數(shù)據(jù)讀取到r1中
ldr r1,[r2],#4@將地址為r2的內(nèi)存單元里的數(shù)據(jù)讀取到r1中,然后r2=r2+4
strr1,[r2] @將地址為r1的內(nèi)存單元里的數(shù)據(jù)保存到r2單元內(nèi)存中
strr1,[r2,#4]@將地址為r1的內(nèi)存單元里的數(shù)據(jù)保存到(r2+4)單元內(nèi)存中
strr1,[r2],#4@將地址為r1的內(nèi)存單元里的數(shù)據(jù)保存到r2單元內(nèi)存中,然后r2=r2+4
其它偽指令:
.externmain
.text
.global _start
_start:
".extern"定義一個外部符號(可以是變量也可以是函數(shù)),上面的代碼表示本文件中引用的main是一個外部函數(shù)。
".text"表示下面的語句都屬于代碼段,(也即是文本段)。
".global _start"將本代碼段中的某個程序標號定義為全局的,比如上面的_start就定義成了一個全局函數(shù)。