MOV指令是最简单的ARM指令,执行的结果就是把一个数N送到目标寄存器Rd,其中N可以是寄存器,也可以是立即数。
MVN是反相传送(Move Negative)指令。它将操作数的反码传送到目的寄存器。MVN指令多用于向寄存器传送一个负数或生成位掩码。
交换指令是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中相应的标志位。
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中。
BIC(Bit Clear)位清零指令,将寄存器Rn的值与第二源操作数的值的反码按位做“逻辑与”操作,结果保存到Rd中。
MLA(Multiply Accumulate)32位乘累加指令将Rm和Rs中的值相乘,再将乘积加上第3个操作数,结果的最低32位保存到Rd中。
UMULL(Unsigned Multiply Long)为64位无符号乘法指令。指令将Rm和Rs中的值做无符号数相乘,结果的低32位保存到RsLo中,而高32位保存到RdHi中。