ARM匯編指令學習之開篇
(一)ARM
指令集
1.指令格式
2.條件碼
3.ARM
存儲器訪問指令
1)LDR/ STR
-加載/存儲指令
2)LDM/ STM
-多寄存器加載/存儲指令
3)SWP
-寄存器和存儲器交換指令
4.ARM
數據處理指令
1)數據傳送指令
a)MOV
-數據傳送指令
b)MVN
-數據非傳送指令
2)算術邏輯運算指令
a)ADD
-加法運算指令
b)SUB
-減法運算指令
c)RSB-
逆向減法指令
d)ADC
-帶進位加法指令
e)SBC
-帶進位減法指令
f)RSC
-帶進位逆向減法指令
g)AND
-邏輯“與”
h)ORR
-邏輯“或”
i)EOR
-邏輯“異或”
j)BIC
-位清除指令
3)比較指令
a)CMP
-比較指令
b)CMN
-負數比較指令
c)TST
-位測試指令
d)TEQ
-相等測試指令
4)乘法指令
a)MUL
-32位乘法指令
b)MLA
-32位乘加指令
c)UMULL
-64位無符號乘法指令
d)UMLAL
-64位無符號乘加指令
e)SMULL
-64位有符號乘法指令
f)SMLAL
-64位有符號乘加指令
5.ARM
分支指令
1)B
-分支指令
2)BL
-帶連接的分支指令
3)BX
-帶狀態(tài)切換的分支指令
6.ARM
協(xié)處理器指令
1)CDP
-協(xié)處理器數據操作指令
2)LDC
-協(xié)處理器數據讀取指令
3)STC
-協(xié)處理器數據寫入指令
4)MCR
-ARM處理器到協(xié)處理器的數據傳送指令
5)MRC
-協(xié)處理器到ARM處理器的數據傳送指令
7.ARM
雜項指令
1)SWI
-軟中斷指令
2)MRS
-讀狀態(tài)寄存器指令
3)MSR
-寫狀態(tài)寄存器指令
8.ARM
偽指令
1)ADR
-小范圍的地址讀取偽指令
2)ADRL
-中等范圍的地址讀取偽指令
3)LDR
-大范圍的地址讀取偽指令
4)NOP
-空操作偽指令
(二)Thumb
指令集
1.Thumb
指令集和ARM指令集的區(qū)別
2.Thumb
存儲器訪問指令
1)LDR/ STR
-加載/存儲指令
2)PUSH/ POP
-寄存器入棧/出棧指令
3)LDMIA/ STMIA
-多寄存器加載/存儲指令
3.Thumb
數據處理指令
1)數據傳送指令
a)MOV
-數據傳送指令
b)MVN
-數據非傳送指令
c)NEG
-數據取負指令
2)算術邏輯運算指令
a)ADD
-加法運算指令
b)SUB
-減法運算指令
c)ADC
-帶進位加法指令
d)SBC
-帶進位減法指令
e)MUL
-乘法運算指令
f)AND
-邏輯“與”
g)ORR
-邏輯“或”
h)EOR
-邏輯“異或”
i)BIC
-位清除指令
j)ASR
-算術右移指令
k)LSL
-邏輯左移指令
l)LSR
-邏輯右移指令
m)ROR
-循環(huán)右移指令
3)比較指令
a)CMP
-比較指令
b)CMN
-負數比較指令
c)TST
-位測試指令
4.Thumb
分支指令
1)B
-分支指令
2)BL
-帶連接的分支指令
3)BX
-帶狀態(tài)切換的分支指令
5.Thumb
雜項指令
1)SWI
-軟中斷指令
6.Thumb
偽指令
1)ADR
-小范圍的地址讀取偽指令
2)LDR
-大范圍的地址讀取偽指令
3)NOP-空操作偽指令
評論