5. 算术说明¶
5.1. 文档约定¶
符号:表示ARM寄存器R0-R7。表示具有 N 位宽度的立即数,例如,。表示进位条件标志,表示其补码。在具有多个寄存器参数的指令的情况下,允许某些指令相同。例如,以下内容会将 R0 的内容添加到自身,将结果放入 R0: Rd, Rm, Rn
immN
imm8
, imm3
. carry
not(carry)
add(r0, r0, r0)
除非另有说明,否则算术指令会影响条件标志。
5.2. 添加¶
add(Rdn, imm8)
Rdn = Rdn + imm8
add(Rd, Rn, imm3)
Rd = Rn + imm3
add(Rd, Rn, Rm)
Rd = Rn +Rm
adc(Rd, Rn)
Rd = Rd + Rn + carry
5.3. 减法¶
sub(Rdn, imm8)
Rdn = Rdn - imm8
sub(Rd, Rn, imm3)
Rd = Rn - imm3
sub(Rd, Rn, Rm)
Rd = Rn - Rm
sbc(Rd, Rn)
Rd = Rd - Rn - not(carry)
5.4. 否定¶
neg(Rd, Rn)
Rd = -Rn
5.5. 乘法和除法¶
mul(Rd, Rn)
Rd = Rd * Rn
这会产生一个 32 位的结果,溢出丢失。根据操作数的定义,结果可以被视为有符号或无符号。
sdiv(Rd, Rn, Rm)
Rd = Rn / Rm
udiv(Rd, Rn, Rm)
Rd = Rn / Rm
这些函数分别执行有符号和无符号除法。条件标志不受影响。