Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28610
  • 博文数量: 6
  • 博客积分: 205
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-18 12:58
文章存档

2012年(6)

我的朋友

分类: LINUX

2012-11-21 10:12:43

ARM寻址方式即ARM CPU根据指令提供的信息去取得、得到数据的方式。

 

ARM系列的CPU架构采用了精简的结构方式设计,这在降低功耗的同时,使其数据处理方式也与通用CPU不同,如:只有加载、存储指令可以对存储器进行操作,立即数不能作为操作数的地址等。

 

ARM的常用寻址方式:

1 立即数寻址:操作数就在指令中给出。立即数需用“#”作为前缀,立即数的限制:经过循环左移或者右移偶数位能够得到一个不大于0XFF的数(一条指令32bit中,只有12bit是用来表示数据的,其中8位是基本数据,4位表示该基本数据移动的为数*2so…

MOV R0,#0X3000

ADD R0,R1,#0X3000

 

2寄存器直接寻址:利用寄存器中的值作为操作数

ADD R0,R1,R2

 

3 寄存器移位寻址:通过寄存器中的值移位获得操作数

ADD R0R3LSL #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:

阅读(1355) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~