MOVE指令:语法<指令>{<cond>}{S} Rd,N
MOV 把一个32位数送到一个寄存器 Rd=N
MVN 把一个32位数的非送到一个寄存器 Rd=~N
桶形移位寄存器:
ARM的一个显著特性是,可以在操作数进入ALU以前,对操作数进行指定位数的左移或者右移
使用桶形移位寄存器可以操作5种不同的指令
LSL 逻辑左移 logical shift left
LSR 逻辑右移 logical shiift right
ASR 算数右移 arithmetic
ROR 循环右移 rotate right
RRX 扩展的循环右移
在移位操作中C依据最后一位被移出的数据
算数指令
指令<cond><S>Rd,Rn,N
ADC 32位带进位加法 Rd=Rn+N+Carry
ADD 32位带加法 Rd=Rn+N
RSB 32位逆向减法 Rd=N-Rn
RSC 带进位的32位逆向减法 Rd=N-Rn-!(C)
SBC 带进位的32位减法 Rd=Rn-N-!C
SUB 32位减法 Rd=Rn-N
逻辑指令 <指令><cond>Rd,Rn,N
AND 32位逻辑与 Rd=Rn&N
ORR32位逻辑或 Rd=Rn|N
EOR32位逻辑异或 Rd=Rn^N
BIC 逻辑位清除 Rd=Rn&~N
此类指令无需使用S后缀即可改变状态标志位
比较指令 <指令><cond>Rn,N
CMN(compare negative)取负比较 依据Rn+N的值来定
CMP(compare)比较 Rn-N
TEQ(Test Equivalence)等值测试 Rn^N
TST(test bit)位测试 依据Rn&N
乘法指令
MLA<cond><S>Rd,Rm,Rs,Rn (multiplication with accumulate)乘累加 Rd=(Rm*Rs)+Rn
MUL<cond> <S>Rd, Rm,Rs 乘法 Rd=Rm*Rn
<指令><cond><S>RdL0 RdHi,Rm,Rs
SMLAL 长整型有符号乘累加[RdHi,RdLo]=[RdHi,RdLo]+(Rm*Rs)
SMULL长整型有符号乘 [RdHi,RdLo]=Rm*Rs
UMLAL 长整型无符号乘累加[RdHi,RdLo]=[RdHi,RdLo]+(Rm*Rs)
UMULL长整型无符号乘 [RdHi,RdLo]=Rm*Rs