1:ARM指令分类
1:ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器(PSR)传输指令,load/Store指令,协处理指令和异常中断产生指令
2:ARM指令集字长为固定的32位,一条典型的ARM指令编码格式如下
opcode:指令助记符; 如ADD表示算法加操作指令
cond:执行条件;
S:是否影响CPSR寄存器的值;
Rd:目标寄存器;
Rn:第1个操作数的寄存器;
operand2:第2个操作数;
大多数时候可以根据CPSR的条件标志位觉得是否该执行指令。当条件满足时才执行,否则不执行。
条件码16个,指令的条件码
2.2.1 数据处理指令的操作数寻址方式
ASR :算术右移
LSL:逻辑左移
LSR :逻辑右移
ROR:循环右移
RRX:扩展的循环右移
MOV R0,R1,LSL,#3; R0=R1*(23);
ADD R0,R1,R1,LSL #3; R0=R1+R1*(23);
SUB R0,R1,R2,LSR #4 ;R0=R1-R2/(2**4)
MOV R0,R1,ROR,R2 ;R0=R1 循环右移动R2位。
**2.2.2、立即数方式,**必须遵循规则:每一个立即数由一个8位的常数循环右移偶数位得到。公式表达为:立