ARMv8寄存器(1)
ARMv8寄存器实在太多了,本节主要针对系统软件常用的寄存器作为重点介绍。
1.ARMv8寄存器介绍
ARMv8架构(针对Core来说)至少有上千个寄存器,更别提Core外SOC级外设寄存器。这两类寄存器的区别是:前者(不管通用寄存器还是系统寄存器)不占用地址空间,而后者是和内存统一编制的,要占用地址空间。
下面我们主要针对ARM Core内寄存器进行介绍。ARM核心寄存器可以分为:
- 通用寄存器。这类寄存器主要是用来暂存数据和参与运算。通过load\store指令操作。
- 状态寄存器。AArch64体系结构使用PSTATE寄存器表示当前处理器状态。
- 特殊寄存器。有专门的用途,用于控制处理器的行为,或表示CPU的状态。
- 系统寄存器。除了以上寄存器,ARMv8体系结构还定义了很多系统寄存器,用来完成对处理器不同功能的配置。对应ARMv7的cp15寄存器。
而系统寄存器,根据其功能又可以分为11种:
- 基本系统寄存器。
- 特殊目的寄存器。3个ELR, 4个SP, 8个SPSR。
- VMSA(虚拟内存架构)特殊寄存器。
- ID寄存器。
- 性能监控寄存器。
- DEBUG寄存器。
- RAS寄存器。
- 通用定时器寄存器。
- Cache维护相关寄存器。
- 地址转换寄存器。
- TLB维护寄存器。
- 分支预测寄存器。
2.重点寄存器
这么多寄存器很难记得住,我们只需要重点关注以下寄存器,其余寄存器用到时候再查手册。
| 寄存器 | 描述 |
|---|---|
| PSTATE | 程序状态寄存器 |
| SP_ELx(x>0) | 在EL1/EL2/EL3 level中,如果spsel=0,则使用SP_ELx(x>0) |
| SP_EL0 | 在所有level中,如果spsel=1, 则使用SP_EL0 |
| SPSR | 备份的程序状态寄存器 |
| ELR_ELx(x>0) | 异常链接寄存器,记录着异常时程序的返回地 |
| ESR_ELx(x>0) | 同步异常, 异常特征寄存器</ |

最低0.47元/天 解锁文章
4898

被折叠的 条评论
为什么被折叠?



