2012年(6)
分类: LINUX
2012-11-21 10:12:43
ARM寻址方式即ARM CPU根据指令提供的信息去取得、得到数据的方式。
ARM系列的CPU架构采用了精简的结构方式设计,这在降低功耗的同时,使其数据处理方式也与通用CPU不同,如:只有加载、存储指令可以对存储器进行操作,立即数不能作为操作数的地址等。
ARM的常用寻址方式:
1 立即数寻址:操作数就在指令中给出。立即数需用“#”作为前缀,立即数的限制:经过循环左移或者右移偶数位能够得到一个不大于0XFF的数(一条指令32bit中,只有12bit是用来表示数据的,其中8位是基本数据,4位表示该基本数据移动的为数*2,so…)
MOV R0,#0X3000
ADD R0,R1,#0X3000
2寄存器直接寻址:利用寄存器中的值作为操作数
ADD R0,R1,R2
3 寄存器移位寻址:通过寄存器中的值移位获得操作数
ADD R0,R3,LSL #3
寄存器移位操作是ARMCPU架构的一大特色,该操作耗用的时钟周期与寄存器直接寻址一样(得益于筒形移位寄存器设计)。
4 寄存器间接寻址:利用寄存器的值作为地址,去主存储器中取数据
LDR R0,[R1]
5 寄存器基址变址:寄存器中的值加上offset作为地址,去主存储器中取数据
LDR R0,[R1,#4] @ R0 ←[R1 + 4]
LDR R0,[R1,#4]! @ R0 ←[R1 + 4]、R1 ←R1 + 4
6 相对寻址:将PC指针作为基址寄存器,加上offset作为地址,去住存储器中取数据
BL MEMSET
…
MEMSET:
…