ARM微处理器第二弹:寄存器

ARM微处理器共有37个32位寄存器,其中31个通用寄存器,6个为状态寄存器。这些寄存器是不能被同时访问的,具体那些可以被访问,取决于ARM处理器的工作状态及具体的运行模式。但是在任何时候,通用寄存器R14-R0、程序计数器PC、一个状态寄存器都是可以被访问的。

寄存器(ARM状态下):在ARM状态下,任一时刻可以访问16个通用寄存器和一到两个状态寄存器。非用户模式(特权模式)下,可以访问特定模式分组寄存器,具体见下图:


寄存器(Thumb状态):Thumb状态下的寄存器集是ARM状态下的一个子集,程序可以直接访问8个通用寄存器(R7-R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。具体见下图:


寄存器对应:

Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:

1)Thumb状态下和ARM状态下的R0-R7是相同的,CPSR和SPSR是相同的;

2)Thumb状态下的SP对应于ARM状态下的R13;

3)Thumb状态下的LR对应于ARM状态下的R14;

4)Thumb状态下的程序计数器PC对应于ARM状态下的R15。如下图所示:


通用寄存器有:R0-R15、R13_svc、R14_svc、R13_abt、R14_abt、R13_und、R14_und、R13_irq、R14_irq、R8_fiq-R14_fiq

不分组通用寄存器(R0-R7):在所有的处理器模式下,访问的都是统一物理寄存器。未分组寄存器没有被系统用于 特别的用途,任何可采用通用寄存器的应用场合都可以使用未分组寄存器。

分组通用寄存器(R8-R14):其中R8-R12可以作为FIQ模式分组寄存器,也可为FIQ以外的分组寄存器;R13通常用 作堆栈指针SP、R14用作子程序的链接寄存器

程序计数器PC(R15):其值等于当前正在执行的指令的地址+8(因为在取址和执行之间多了一个译码阶段)。


状态寄存器:ARM所有工作模式下都可以访问程序状态寄存器CPSR。CPSR包含条件码标志、、中断禁止位、当前 处理器模式以及其他状态和控制信息。CPSR在每种异常模式下都有一个对应的物理寄存器——程序 状态保存寄存器SPSR。当异常出现时,SPSR 用于保存CPSR的值,以便异常返回后恢复异常发生 时的工作状态。

           





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C-Jonn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值