指令符號 |
指令功能描述 |
數學運算(Arithmetic instruction) |
|
ADC |
納入進位旗標相加指令 |
ADD |
加法指令 |
CMN |
比較反號指令 |
CMP |
比較指令 |
SUB |
減法指令 |
SUC |
納入進位旗標相減指令 |
MLA |
32位元相乘並相加指令 |
MUL |
32位元乘法指令 |
RSB |
對調相減指令 |
RSC |
納入進位旗標對調相減指令 |
邏輯運算(Logic instruction) |
|
AND |
AND運算指令 |
BIC |
位元清零(bit clear)指令 |
EOR |
Exclusive 或 運算指令 |
ORR |
ORR運算指令 |
TEQ |
相等測試指令 |
TST |
位元測試指令 |
跳轉指令(Branch Instruction) |
|
B |
跳轉指令 |
BL |
帶返回的跳轉指令 |
BLX |
帶返回和狀態切換的跳轉指令 |
BX |
帶狀態切換的跳轉指令 |
載入指令(Load Instruction) |
|
LDM |
載入多個寄存器指令 |
LDR |
記憶體到暫存器的資料傳輸指令 |
搬移指令(Move instruction) |
|
MOV |
資料傳送(搬移)指令 |
MVN |
資料取反搬移指令 |
MRS |
傳送CPSR或SPSR的數值到一般暫存器指令 |
MSR |
傳送一般暫存器到CPSR或SPSR的指令 |
輔助運算器(協同處理器) (Coprocessor instruction) |
|
MCR |
從ARM暫存器的數值到輔助運算器(協同處理器)暫存器的資料傳輸指令 |
MRC |
從輔助運算器(協同處理器)暫存器的數值到ARM暫存器的資料傳輸指令 |
LDC |
從輔助運算器(協同處理器)暫存器的數值到記憶體的資料傳輸指令 |
STC |
從記憶體內的數值到輔助運算器(協同處理器)暫存器的資料傳輸指令 |
CDP |
輔助運算器資料操作指令 |
軟體中斷(Software Interrupt instruction) |
|
SWI |
觸發軟體中斷指令 |
SBC |
帶借位減法指令 |
儲存指令(Storw instruction) |
|
STM |
多重記憶體寫入指令 |
STR |
暫存器到記憶體的資料傳輸指令 |
其他指令(Others) |
|
NOP |
無指令 |
SWP |
暫存器與記憶體數值交換指令 |
表. ARM指令及功能描述
cond |
x x x |
opcode |
S |
Rn |
Rd |
shifter_operand |
其中:
cond 指令執行的條件式編碼
opcode 指令操作符號
S 指定是否在運算執行時順便更新CPRS的旗標
Rn 包含第一個運算元的目標暫存器的編號
Rd 資料來源暫存器的編號
shifter_operand 第二個資料來源運算元
表. 條件式定義、編碼與跳轉指令範例
編碼[31:28] |
條件描述 |
狀態旗標 |
運算含義 |
指令範例 |
0000 |
EQ |
Z = 1 |
相等 |
BEQ |
0001 |
NE |
Z = 0 |
不等值 |
BNE |
0010 |
CS/HS |
C =1 |
大於等於 |
BCS |
0011 |
CC/LO |
C = 0 |
小於 |
BCC |
0100 |
MI |
N =1 |
負值 |
BMI |
0101 |
PL |
N =0 |
正數或零 |
BPL |
0110 |
VS |
V = 1 |
溢位 |
BVS |
0111 |
VC |
V = 0 |
無溢出 |
BVC |
1000 |
HI |
C = 1 and Z = 0 |
大於 |
BHI |
1001 |
LS |
C = 0 or Z v |
小於等於 |
BLS |
1010 |
GE |
N =V |
大於等於 |
BGE |
1011 |
LT |
N ≠ V |
小於 |
BLT |
1100 |
GT |
Z = 0 and N = V |
大於 |
BGT |
1101 |
LE |
Z = 1,or N ≠ V |
小於或等於 |
BLE |
1110 |
AL |
Any |
預設值 |
BAL |