ARM-ADD

ADD是不带进位的加法指令。

语法:

ADD{S}{cond} {Rd}, Rn, Operand2
ADD{cond} {Rd}, Rn, #imm12 ; Thumb, 32-bit encoding only

S

可选后缀,如果有,那么条件标示根据操作结果更新

cond

可选条件,

Rd

目标寄存器

Rn

存储第一个操作数的寄存器

Operand2

第二个操作数

imm12 

0-4095之间的数字

ADD指令吧Rn的值或Operand2或imm12的值相加。

在默写情况下,汇编器可以将一条指令替换为另一条。

Thumb指令中使用PC和SP

通常,我们不能把PC(R15)当Rd,或其他操作数。

例外的是:

  • 可以在32位Thumb ADD指令中,用PC当Rn,0-4095的数当Operand2,并且没有S后缀,这些指令被用来生成PC-relative地址。。在这种情况下,PC值的位[1]读为0,因此计算的基址始终是字对齐的

  • 也可以在16位Thumb ADD{cond} Rd,Rd,Rm 指令中任意寄存器使用PC,but以下16位Thumb指令在ARMv6T2以上弃用了:


  • ADD{cond} PC, SP, PC.

  • ADD{cond} SP, SP, PC.

通常不能用SP(R13)做Rd,或任意操作数,以下除外:

  • 可以在ADD指令中用SP做Rn

  • ADD{cond} SP, SP, SP 可以使用,但是在ARMV6T2过期了

  • ADD{S}{cond} SP, SP, Rm{,shift} and SUB{S}{cond} SP, SP, Rm{,shift} are permitted if shift is omitted or LSL #1LSL #2, or LSL #3.

ARM指令中使用PC和SP

不能将PC用于Rd或任何具有寄存器控制移位的数据处理指令中的任何操作数。

在没有寄存器控制的移位的ADD指令中,除以下情况外,不建议使用PC:

  • Use of PC for Rd in instructions that do not add SP to a register.

  • Use of PC for Rn and use of PC for Rm in instructions that add two registers other than SP.

  • Use of PC for Rn in the instruction ADD{cond} Rd, Rn, #Constant.

如果使用PC(R15)作为Rn或Rm,使用的值是指令的地址加8.

如果用PC作为Rd

执行分支到与结果相对应的地址。

如果使用S后缀,请参见SUBS pc,lr指令


Adam博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • Powered by bjyblog modified by Adam © 2014-2024 www.lixiaopeng.com 版权所有 ICP证:鲁ICP备15039297号
  • 联系邮箱:14846869@qq.com