素材来源:https://blog.csdn.net/qq_34430371/article/details/125820927
整理:技术让梦想更伟大 | 李肖遥
笔者来聊聊ARM通用寄存器以及状态寄存器的认识与理解。
对于处理器来说,寄存器可以作为暂存器,存储临时结果,也可以作为输入数据,方便运算,也可以作为一种索引,去访问存储器,其作用各种各样。
CortexM3/M4是比较常用的ARM架构,很多厂商都采用了这样的架构,比如ST公司的stm32,广受大家欢迎,还有NXP的MK60芯片,一直在飞思卡尔比赛中很受欢迎,还有国产兆易创新的GD32,亚特力的AT32,国民技术的N32系列。
其在嵌入式领域非常受欢迎,相对方便上手,功能齐全,满足一般的对MCU的需求。
其寄存器模型如下:
通用目的寄存器R0-R7
,低组寄存器,32bit,16位thumb以及32位的thumb-2指令均可以访问
通用目的寄存器R8-R12
,高组寄存器,32bit,较少的16位thumb指令可以访问,一般是 thumb-2指令访问。
栈指针R13(SP) 指示当前栈所指位置。
链接寄存器R14(LR) 保存程序返回地址。
程序计数器R15(PC)
程序运行的当前位置。
Cortex R系列继承了ARM7架构下的系统模型,有多组工作模式,每个模式都有自己的地址空间(堆栈地址SP)
ARMv7的一般AR系列的寄存器模型和上述的基本相同,有一些新的扩展,
寄存器通常是CPSR(Current Program state register),用来表示当前程序运行的状态、模式、运算结果状态、中断状态等。,比如下面这个CPSR寄存器模型。
说明解释:表示程序的运行结果的状态,可以用来跳转,例如:结果是否为0,结果是否有进位,结果是否溢出,结果是否为负数等等。
比如常见的DAIF 中断屏蔽位,分别为:
CPSR的低五位为模式控制位,控制当前CPU为何种模式,设置各种模式则是为了处理异常以及分层管理,低级无法访问特定资源,而特权模式则可以进行资源上的操作。
mode | description | restriction |
---|---|---|
User Mode | 运行用户程序,非特权模式 ,无法处理异常,除非异常,否则无法改变当前模式 | 对系统资源的访问进行限制(外设以及memory) |
SVC Mode | 用于系统管理,比如系统下的资源访问,以及OS的调度管理,可以通过软件触发,特权模式 ,执行SVC指令可以进入到本异常,复位之后进入该模式 ,(正常行为,软件触发到 ) | |
system Mode | 与用户模式共享所有寄存器,特权模式 ,不能通过异常进入,(正常行为,软件触发 ) | |
Abort Mode | Data Abort或者Prefetch Abort,前者是数据访问出错,后面是取指令错误,特权模式 ,(异常行为,硬件检测到 ) | |
Undefined Mode | 指令相关的异常处理,例如执行到未定义的指令,特权模式 ,(异常行为,硬件检测到 ) | |
FIQ Mode | 特权模式 ,处理快速中断,(正常行为,硬件触发到 ) | |
IRQ Mode | 特权模式 ,处理普通终端,(正常行为,硬件触发到 ) |
T Value | 指令集 | 描述 |
---|---|---|
0 | ARM指令集 | 32位DWORD对齐的指令 |
1 | Thumb指令集 | 部分为16位半字(half word)对齐的指令,增加代码密度,减少Image size |
X | 关联 | 两种指令集可以混合使用,通过状态来表征,比如通过bx 、blx可以切换指令集 |
endian state value | 模式 | 描述 | 设置指令 |
---|---|---|---|
0 | 小端模式 | memory 低字节在低位 | SETEND LE |
1 | 大端模式 | memory 低字节在高位 | SETEND BE |
一些控制系统状态的标志位,比如ARMv8-A系列
标志属性 | 描述 | HTML |
---|---|---|
SP_ELx | Stack pointer register selected,' | 比如SP_EL0 或者SP_EL3 |
EL | "异常等级" | “EL0、EL1、EL2以及EL3” |
SS | 软件单步控制 | for debugger make PE single-step instruction |
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
关注我的微信公众号,回复“加群”按规则加入技术交流群。
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。