交换指令是load/store指令的一种特例,它把一个寄存器单元的内容与寄存器内容交换。交换指令是一个原子操作(atomic operation),也就是说,在连续的总线操作中读/写一个存储单元,在操作期间阻止其他任何指令对该存储单元的读/写。
ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。
AND指令将表示的数值与寄存器的值按位(bitwise)做逻辑与操作,并将结果保存到目标寄存器中,同时根据操作的结果更新CPSR寄存器。
逻辑异或EOR(Exclusive OR)指令将寄存器中的值和的值执行按位“异或”操作,并将执行结果存储到目的寄存器中,同时根据指令的执行结果更新CPSR中相应的条件标志位。
SUB(Subtract)减操作指令,从寄存器中减去表示的数值,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
RSB(Reverse Subtract)减操作指令,从寄存器中减去表示的数值,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
ADD加操作指令,将寄存器的值加上表示的数值,并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
ADC加操作指令,将寄存器的值加上表示的数值,再加上CPSR中的C条件标志位的值,将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
SBC(Subtract with Carry)带进位的减操作指令,用于执行操作数大于32位时的减法操作。该指令从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码(NOT(Carry flag))。并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
RSC(Reverse Subtract with Carry)带进位的翻转减操作指令,从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码(NOT(Carry Flag)),并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
TEQ(Test Equivalence)测试指令用于将一个寄存器的值和一个算术值做比较。条件标志位根据两个操作数做“逻辑或”后的结果设置。以便后面的指令根据相应的条件标志来判断是否执行。
CMP(Compare)比较指令使用寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
CMN(Compare Negative)比较指令使用寄存器Rn的值减去operand2的负数值(加上operand2),根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
ORR(Logical OR)为逻辑或操作指令,将第二个源操作数的值与寄存器Rn的值按位做逻辑或操作,结果保存到Rd中。
学吧
夜是打火机
18713271819cxy
贾仁明
bu一样的烟火
mikeniu
chris527
LBSEric
21CI2133
洛奇ing
SIASGUOJIe
逮到一只程序猿
zx66
zhaoyuan
建志的智
sdwfywl
cgyyds
云城a
shaolw
ti-funs
刘剑君
带偷子
shaoniany
陈震伟
2334599288
helloyyll
怪打野题
liqinglong1023
cxk1998