只罗列,不多说。
16个寄存器,R0-R16,其中R14,R15,R16,分别用作,程序链接寄存器,PC寄存器,CPSR寄存器。
是每一种工作模式下可用十六个寄存器并非总量,有些寄存器在不同的工作模式下共用。
所有数据最终都要传送到R0-R14(R14不作程序链接寄存器时也用作通用寄存器)之间进行处理。
伪指令:
1, B,BL
2, MOV,MVN(比MOV为了一步取反)
3, LDR,STR
4, ADD,SUB,ADC(带进位加法),SBC(带进位减法),MUL
5, AND(与),ORR(或),XOR,TST(测某位是否为一),BIC(清位)
6, CMP(比较指令)
7, LDM/STM(批指令)
8,nop
大部分指令后位可以接 与S两个特殊位来表示,对CPSR特殊的一些判断,
S,表示当前指令执行后把结果改写CPSR
九种寻址方式:
1,ADD R0,R1, R2 寄存器寻址
2,MOV R0,#64 立即数寻址
3,LDR R0,[R1] 寄存吕间接寻址
4,MOV R0,R2,LSL #3 寄存器偏移寻址,此例是R2的值左移三们
5,LDR R0,[R1,#4] 寄存器基址寻址
6,LDM
IA R0,{R1,R2,R3,R4} 多寄存器寻址(将R0表示的地址中的数据依次写入后面的寄存器)
7,BL NEXT 相对寻址(以PC为基址)
8,STM
FD SP
!,{R1-R7, LR} 堆栈寻址
9,块拷贝寻址,和堆栈寻址差不多,只是把栈寄存器换成其他地址寄存器
有关STM LDM后面两个字母的解释如下 :
IA: 每次传送后地址加4;
IB: 每次传送前地址加4;
DA: 每次传送后地址减4;
DB: 每次传送前地址减4;
FD: 满递减堆栈;F:SP指向最后一个数据
ED: 空递减堆栈;E:SP指向将要进来的一个数据
FA: 满递增堆栈;
EA: 空递增堆栈。
还有两个协处理器数据处理指令:mcr ,mrc
MCR{
} p15, 0, , , {,}
条件, 协处理理编号,操作码,源寄存器,目标寄存器1和2,
MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中
MRC{} p15, 0, , , {,}
目的寄存器,源寄存器1和2,
MRC指令将协处理器的寄存器中数值传送到ARM处理器的寄存器中
附加的目标寄存器或者原操作数寄存器,用于区分同一个编号的不同物理寄存器。当指令中不需要提供附加信息时,将C0指定
为,否则指令操作结果不可预知。 提供附加信息,用于区别同一个编号的不同物理寄存器。
暂时就想到这些内容
阅读(749) | 评论(0) | 转发(1) |