天天看點

ARM - 指令集

文章參考: 

https://baike.baidu.com/item/ARM%E6%8C%87%E4%BB%A4%E9%9B%86/907786?fr=aladdin

https://blog.csdn.net/u013477200/article/details/50723555

https://blog.csdn.net/dddxxxx/article/details/47130545

        ARM指令集是指計算機ARM操作指令系統。在ARM中有兩種方式可以實作程式的跳轉:一種是跳轉指令;另一種是直接向PC寄存器(R15)中寫入目标位址值。

        ARM指令集可以分為跳轉指令、資料處理指令、程式狀态寄存器(PSR)處理指令、加載/存儲指令、協處理器指令和異常産生指令六大類。

ARM指令表 

ADC 帶進位的32位數加法
ADD 32位數相加
AND 32位數的邏輯與
B 在32M空間内的相對跳轉指令
BEQ 相等則跳轉(Branch if EQual)
BNE 不相等則跳轉(Branch if Not Equal)
BGE 大于或等于跳轉(Branch if Greater than or Equa)
BGT 大于跳轉(Branch if Greater Than)
BIC 32位數的邏輯位清零
BKPT 斷點指令
BL 帶連結的相對跳轉指令
BLE 小于或等于跳轉(Branch if Less than or Equal)
BLEQ 帶連結等于跳轉(Branch with Link if EQual)
BLLT 帶連結小于跳轉(Branch with Link if Less Than)
BLT 小于跳轉(Branch if Less Than)
BLX 帶連結的切換跳轉
BX 切換跳轉
CDP CDP2 協處理器資料處理操作
CLZ 零計數
CMN 比較兩個數的相反數
CMP 32位數比較
EOR 32位邏輯異或
LDC LDC2 從協處理器取一個或多個32位值
LDM 從記憶體送多個32位字到ARM寄存器
LDR 從虛拟位址取一個單個的32位值
MCR MCR2 MCRR 從寄存器送資料到協處理器
MLA 32位乘累加
MOV 傳送一個32位數到寄存器
MRC MRC2 MRRC 從協處理器傳送資料到寄存器
MRS 把狀态寄存器的值送到通用寄存器
MSR 把通用寄存器的值傳送到狀态寄存器
MUL 32位乘
MVN 把一個32位數的邏輯“非”送到寄存器
ORR 32位邏輯或
PLD 預裝載提示指令
QADD 有符号32位飽和加
QDADD 有符号雙32位飽和加
QSUB 有符号32位飽和減
QDSUB 有符号雙32位飽和減
RSB 逆向32位減法
RSC 帶進位的逆向32法減法
SBC 帶進位的32位減法
SMLAxy 有符号乘累加(16位*16位)+32位=32位
SMLAL 64位有符号乘累加((32位*32位)+64位=64位)
SMALxy 64位有符号乘累加((32位*32位)+64位=64位)
SMLAWy 号乘累加((32位*16位)>>16位)+32位=32位
SMULL 64位有符号乘累加(32位*32位)=64位
SMULxy 有符号乘(16位*16位=32位)
SMULWy 有符号乘(32位*16位>>16位=32位)
STC STC2 從協處理器中把一個或多個32位值存到記憶體
STM 把多個32位的寄存器值存放到記憶體
STR 把寄存器的值存到一個記憶體的虛位址内間
SUB 32位減法
SWI 軟中斷
SWP 把一個字或者一個位元組和一個寄存器值交換
TEQ 等值測試
TST 位測試
UMLAL 64位無符号乘累加((32位*32位)+64位=64位)
UMULL 64位無符号乘累加(32位*32位)=64位