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