加法、减法和反向减法,均可带进位或不带进位。
- 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 位乘法