关于ARM寄存器的部分理解

ARM寄存器

寄存器:是一种特殊的存储器,在CPU内部,可以用来存储数据,但是存储的内容有一定作用 。

        对于Cortex A来说, 有40个寄存器,每个寄存器有32bit 。

注:对于寄存器而言,是没有内部地址的,使用编号来表示。

 ARM寄存器图:

 种类:

1、通用寄存器

R0-R7 :未分组寄存器

R13、R14 (FIQ:R8-R12 ):分组寄存器;

R15(PC):程序计数器(指令计数器/程序状态寄存器);

通用储寄存器作用:

R0-R12:存储各种数据;

特殊功能的寄存器:

R13(堆栈指针寄存器SP):存储栈的栈顶位置地址,与内存相关 ;

R14(链接寄存器LR):当程序跳转、函数调用时产生异常,调用该寄存器来存储异常,实现对断点和调用点的记录;

R15(程序计数器PC):存储当前执行的指令的下一条指令的地址。

2、状态寄存器

ARM寄存器:每种工作模式都会使用模式对应的寄存器保证程序执行。

Cortex-A:有40个,

其他:有37个

注:sys和user使用同一组寄存器 。

通用寄存器 :R0-R15

未分组寄存器:R0-R12 在所有模式下,未分组寄存器都是指向同一个物理寄存器,如果存在模式转换时,不同的模式都使用相同的寄存器,所以可能造成寄存器的数据破坏,应该工作模式切换时要保存。

分组寄存器:(FIQ)R8-R12、R13(SP)、R14(LR) 每次访问寄存器都与当前的工作模式相关,不同的模式都有不同的寄存器。

注:

ARM架构的八种工作模式:    
        用户模式(user):用户程序的工作模式,运行在操作系统的用户态,不能操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式,要切换到其他模式,只能产生中断或其他异常;

        系统模式(system):系统模式是特权模式,不受用户模式的限制。使用同一套寄存器。操作系统通过该模式使用户访问受限的资源;

        一般中断模式(IRQ):用于处理一般的中断请求。一般在硬件产生中断信号后会自动进入该模式,是一种特权模式,可以自由访问系统硬件资源;
        快速中断模式(FIQ):用于处理时间要求比较紧急的中断请求。一般在高速数据传输及通道中;

        管理模式(spuer visor):一般CPU上电之后会自动进入该模式,该模式主要完成系统的初始化,软中断也会进入该模式。如果在用户模式下可以通过软中断进入该模式,请求访问硬件资源;

        未定义模式(undefined):未定义指令中止。CPU在指令的译码阶段不能识别该指令操作时,则会进入该模式;

        终止模式非法访问(abort):当用户非法访问内存,没有权限读写内存地址时,会进入该模式;

        安全模式(monitor):为了安全而扩展出来的用于执行安全监控代码的模式。
        注:模式之间可以进行切换,只要产生对应的异常就可以切换到对应的模式种

SP:堆栈指针寄存器 使用到内存,存储堆栈地址 。

LR:跳转链接寄存器 在程序跳转,函数调用,中断处理。

程序计数寄存器—R15(PC)

        存储程序下一条要执行的指令地址,会自动由硬件修改,也可以由我们操作改变。

        ARM指令:大小为4个字节,所以指令偏移大小为4,指令地址也是4的整数倍,所以程序计数器最低2位无效(低2位表示的地址是0-3)。

         Thumb指令:大小为2个字节,所以程序计数器最低位无效。

程序状态寄存器—CPSR、SPSR

        CPSR:程序状态寄存器,存储当前cpu执行程序时的工作状态 cpu在工作时只会有一个工作状态,所以所有的工作模式都是同一个CPSR 所有的运行工作模式都可以访问到CPSR;

        SPSR:备份程序状态寄存器 当产生异常,切换对应的工作模式,SPSR用于保存当前的CPSR的值,然后改变CPSR(修改工作状态),异常结束时,回到之前的工作模式,就把SPSR的值恢复到CPSR。

        上述是本人对于ARM寄存器部分见解,如有错误,还请批评指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值