加法、减法和反向减法,均可带进位或不带进位。
op{S}{cond} {Rd}, Rn, Operand2
op{cond} {Rd}, Rn, #imm12 ; Thumb-2 only
其中:
op 是下列项之一:
ADD 加法。
ADC 带进位加法。
SUB 减法。
RSB 反向减法。
SBC 带进位减法。
RSC 带进位反向减法(仅 ARM)。
S 是一个可选的后缀。如果指定了 S,则将会更新运算结果的条件代 码标记。
cond 是一个可选的条件代码。
Rd 是目标寄存器。
Rn 是存放第一个操作数的寄存器。
Operand2 是一个灵活的第二操作数。有关此选项的详细信息。
imm12 可为 0-4095 范围内的任一值。只可用于 ADD 和 SUB 指令,且只可用 于 Thumb-2 代码中
ADD Rd, Rn, Rm ; Rd = Rn+Rm
ADD Rd, Rm ; Rd += Rm
ADD Rd, #imm ; Rd += imm ;常规加法imm 的范围是 im8(16 位指令)或 im12(32位指令)
ADC Rd, Rn, Rm ; Rd = Rn+Rm+C
ADC Rd, Rm ; Rd += Rm+C
ADC Rd, #imm ; Rd += imm+C ;带进位的加法imm 的范围是 im8(16 位指令)或 im12(32位指令)
ADDW Rd, #imm12 ; Rd += imm12 带 12 位立即数的常规加法
SUB Rd, Rn ; Rd -= Rn
SUB Rd, Rn, #imm3 ; Rd = Rn-imm3
SUB Rd, #imm8 ; Rd -= imm8
SUB Rd, Rn, Rm ; Rd = Rm-Rm 常规减法
SBC Rd, Rm ; Rd -= Rm+C
SBC.W Rd, Rn, #imm12 ; Rd = Rn-imm12-C
SBC.W Rd, Rn, Rm ; Rd = Rn-Rm-C 带借位的减法
RSB.W Rd, Rn, #imm12 ; Rd = imm12-Rn
RSB.W Rd, Rn, Rm ; Rd = Rm-Rn 反向减法
MUL Rd, Rm ; Rd *= Rm
MUL.W Rd, Rn, Rm ; Rd = Rn*Rm 常规乘法
MLA Rd, Rm, Rn, Ra ; Rd = Ra+Rm*Rn
MLS Rd, Rm, Rn, Ra ; Rd = Ra-Rm*Rn 乘加与乘减(译者添加)
UDIV Rd, Rn, Rm ; Rd = Rn/Rm (无符号除法)
SDIV Rd, Rn, Rm ; Rd = Rn/Rm (带符号除法)硬件支持的除法
SMULL RL, RH, Rm, Rn ;[RH:RL]= Rm*Rn
SMLAL RL, RH, Rm, Rn ;[RH:RL]+= Rm*Rn 带符号的 64 位乘法
UMULL RL, RH, Rm, Rn ;[RH:RL]= Rm*Rn
SMLAL RL, RH, Rm, Rn ;[RH:RL]+= Rm*Rn 无符号的 64 位乘法