ARM 内核 汇编指令 的 8种 寻址方式
str: store register ->指令将寄存器内容存到内存空间中, ldr: load register 将内存内容加载到通用寄存器, ldr/str 组合来实现ARM CPU 和内存数据的 交换!
1、mov r1,r2; //寄存器r2的内容复制到r1中,寄存器寻址方式,(r1,r2 ARM中的通用寄存器)
2、mov r0,#0xFF00; //数0xFF00复制到r0中,立即寻址方式,(#代表后面跟一个数)
3、mov r0,r1,lsl #3; //将r1中的内容左移三位后传送到r0中,寄存器移位寻址,(LSL(或ASL)可完成对通用寄存器中的内容进行逻辑(或算术)的左移操作)
4、ldr r1,[r2]; //r2 加了一个“[]”, 表示 r2的值 代表一个内存地址,把r2的值作为地址 去内存中 把这个地址存放的数据放到 r1寄存器中,寄存器间接寻址
5、ldr r1,[r2,#4]; //把(r2的值+4)的值作为地址, 去内存中 把这个地址存放的数据放到 r1寄存器中,基址多变寻址
6、ldmia r1!,{r0,r1-r4};
// ia: 每次传送后地址加4;多寄存器寻址
;R1<----[R0]
;R2<----[R0+4]
;R3<----[R0+8]
;R4<----[R0+12]
7、stmfd sp!,{r2-r7,lr}; //堆栈寻址,解释方式类似上一条
8、flag: //相对寻址,类似C语言中的 goto 指令,其实 goto 就是从这来的!
(上面各类的指令很多 ,每一类这只是提出其中的 一个)
2016年11月28日12:40:28,GXP,ADD