十四.寄存器和寻址

1.寄存器分类:


2.一共37个寄存器,31个通用寄存器,6个状态寄存器

其中usr和sys的寄存器很类似

3.通用寄存器:
(1)不分组寄存器0--7
(2)分组寄存器:8--14
(3)PC指针:r15

4状态寄存器:只有在异常模式下,才会既有cpsr又有spsr,usr和sys模式下只有cpsr,为的是保护现场


(1)N:表示符号,1表示负数,0表示正数。如两个数进行比较和减法操作
(2)Z:当两个数相等,为1,否则为0,也是比较和加法操作居多
(3)I:当他为1的时候,处理器不能产生中断,即中断屏蔽
(4)F:快速中断屏蔽,为1生效
(5)M【4:0】:表明不同的工作模式,可读可写,及变换工作模式,一般用读,修改,写的方式来切换工作模式。

5.特殊寄存器
(1)r13:sp指针,堆栈寄存器
(2)r14:LR链接寄存器。有两个特殊功能,每一种模式下都可以用于保存函数的返回地址,另外就是异常处理后的返回地址,如中断。
(3)r15:PC指针,程序计数器


6.寻址方式:处理器根据指令提供的信息找到所需要的操作数的过程,针对源操作数

7.立即寻址:操作数直接给出,以#作为前缀
               add     r0,r0,#0x3f

8.寄存器寻址:操作数存放在寄存器中,以寄存器直接出现在指令中
               add     r0,r1,r2

9.寄存器间接寻址:操作数在内存中,其对应的地址存放在寄存器中,以【寄存器】的形式出现在指令中
               ldr     r0,[r2]

10.基址变址寻址:操作数在内存中,其对应的地址由基址寄存器里的值作为基地址,然后加上偏移量,从而得到操作数在内存中实际的物理地址,以【基址寄存器,偏移量】形式出现在指令中
               ldr     r0,[r1,#4]

11.相对寻址:和基址变址相似,只不过以当前PC指针的值作为基地址,然后加上标号偏移量,从而得到实际的操作数地址,常用于程序的跳转和返回。
               
               bl     next(相对寻址)
               ...     ...
               next
               ...     ...
               mov     pc,lr
               
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值