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{
可以使用,但是在ARMV6T2过期了cond
} SP, SP, SP
ADD{S}{cond} SP, SP, Rm{,
and shift
}SUB{S}{cond} SP, SP, Rm{,
are permitted if shift
}
is omitted or shift
LSL #1
, LSL #2
, or LSL #3
.
ARM指令中使用PC和SP
不能将PC用于Rd或任何具有寄存器控制移位的数据处理指令中的任何操作数。
在没有寄存器控制的移位的ADD指令中,除以下情况外,不建议使用PC:
Use of PC for R
in instructions that do not add SP to a register.d
Use of PC for R
and use of PC for n
R
in instructions that add two registers other than SP.m
Use of PC for R
in the instruction n
ADD
.{cond
} Rd
, Rn
, #Constant
如果使用PC(R15)作为Rn或Rm,使用的值是指令的地址加8.
如果用PC作为Rd
执行分支到与结果相对应的地址。
如果使用S后缀,请参见SUBS pc,lr指令
本文为Adamin90原创文章,转载无需和我联系,但请注明来自http://www.lixiaopeng.top