5. 算法指令¶
5.1. 文件规范¶
符号: Rd
, Rm
, Rn
表示ARM寄存器R0-R7。 immN
表示具有N位宽度的即时值,如 imm8
、 imm3``等。
``Carry
表示进位条件标志。 not(carry)
表示其补码。对于多于一个寄存器参数的指令,允许其相同。
例如,以下指令将把R0的内容添加到其自身,将结果置于R0中:
- 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
这些函数分别执行有符号和无符号的除法。条件标志不受影响。