在介绍寄存器之前,我们先看下ARM中都有什么,以arm为例:
1、通用寄存器
(1)、a r m v 7 color{red}{arm v7}armv7 有 16 个 32-bit 通用寄存器,用 r0-r15 表示;
sp:r13, lr:r14, pc:r15
(2)、a r m v 8 color{red}{arm v8}armv8 有 31 个 64-bit 通用寄存器,用 x0-x30 表示,和v7不一样的是,这31个寄存器也可以作为 32-bit 寄存器来用,用 w0-w30 表示,其中 wn 是 xn 的低32位;
lr:x30, sp, pc
2、向量寄存器(SIMD)
(1)、a r m v 7 color{red}{arm v7}armv7 包含 16 个 128-bit 向量寄存器,用 q0-q15 表示。其中每个q寄存器又可以拆分成两个 64-bit 向量寄存器来用,用 d0-d31 来表示
(2)、a r m v 8 color{red}{arm v8}armv8 包含32个 128-bit 向量寄存器
a)、每个128-bit向量寄存器可以当做:
包含 2 个 64-bit 元素的向量寄存器来用,表达形式是 vn.2d;
包含 4 个 32-bit 元素的向量寄存器来用,表达形式是 vn.4s;
包含 8 个 16-bit 元素的向量寄存器来用,表达形式是 vn.8h;
包含 16 个 8-bit 元素的向量寄存器来用,表达形式是 vn.16b;
或者每个向量寄存器也可以只用低 64-bit:
1 个 64-bit 元素的向量寄存器来用,表达形式是 vn.1d;
2 个 32-bit 元素的向量寄存器来用,表达形式是 vn.2s;
4 个 16-bit 元素的向量寄存器来用,表达形式是 vn.4h;
8 个 8-bit 元素的向量寄存器来用,表达形式是 vn.8b;
q:128, d:64, s:32, h:16, b:8
状态寄存器
3、banked registers:
(armv8文档描述)
Banked register
A register that has multiple instances, with the instance that is in use depending on the PE mode, Security state, or other PE state
(stackoverflow的描述)
(https://stackoverflow.com/questions/42810627/arm-banked-register 描述)
In ARM there is a concept of Banked Register. While reading many questions and their answer and various other resources about what is Banked mean here. Then I got this definition: Register banking refers to providing multiple copies of a register at the same address. Not all registers can be seen at once.
在a r m v 7 color{red}{arm v7}armv7中,有很多banked registers,例如TTBRx,VBAR,SCTLR…
在a r m v 8 color{red}{arm v8}armv8中,banked registers就少了很多,因为大多数系统寄存器都添加了ELx后缀
4、状态寄存器CPSR:
在armv7上有cpsr寄存器
在armv8-32上同样有cpsr寄存器
在armv8-32上同样有PSTATE取代了cpsr,PSTATE是一组状态寄存器的集合
5、系统寄存器:
在armv7上,系统寄存器的读写都是通过协处理器指令来操作的
在armv8-arch64上,移除了协处理器的概念,通过MSR/MRS来访问系统寄存器。
6、以下重点介绍ARMV8的系统寄存器:
• Special-purpose registers.
• VMSA-specific registers
• ID registers on page
• Performance monitors registers
• Debug registers on page
• RAS registers on page
• Generic timer registers
• Cache maintenance system instructions
• Address translation system instructions
• TLB maintenance system instructions
• Prediction restriction System instructions
• Base system registers
(1)、Special-purpose registers
ELR_EL1
ELR_EL2
ELR_EL3
SP_EL0
SP_EL1
SP_EL2
SP_EL3
SPSR_EL1
SPSR_EL2
SPSR_EL3
SPSR_fiq
SPSR_irq
SPSR_und
SPSR_abt
(2)、Base system registers
PSTATE
SCR_EL3
SCTLR_EL1
SCTLR_EL2
SCTLR_EL3
VBAR_EL1
VBAR_EL2
VBAR_EL3
…
其中PSTATE又包含:
NZCV
DAIF
CurrentEL
SPSel
PAN
UAO
DIT
SSBS
(3)、Cache maintenance system instructions
DC CGDSW
DC CGDVAC
DC CGDVADP
DC CGDVAP
DC CGSW
DC CGVAC
…(共31个)…
DC CGDVAC, (4)、Address translation system instructions AT S12E0R AT S12E0W AT S12E1R AT S12E1W AT S1E0R AT S1E0W AT S1E1R AT S1E1RP AT S1E1W AT S1E1WP AT S1E2R AT S1E2W AT S1E3R AT S1E3W AT S1E1W, (5)、TLB maintenance system instructions TLBI ALLE1 TLBI ALLE1IS TLBI ALLE1OS TLBI ALLE2 TLBI ALLE2IS TLBI ALLE2OS …(共78个)… TLBI ALLE1IS{, (6)、cryptographic Extension instructions
设计资源 培训 开发板 精华推荐
- USB供电评估板,使用STM32F072 Type-C端口管理器和安森美半导体的FUSB307B Type-C端口控制器
- STC_课程表
- 紧凑型 PCI 热插拔控制器,具有总线充电、PCI 复位信号的片上拦截等功能
- 模块稳压器缩小 LTM8023 的电源尺寸和设计工作在 2A 时产生 3.3V,而 LTM8022 产生 1A 所需的占位面积和组件相同
- SECO-NCV7685RGB-GEVB:RGB 照明评估板
- 使用 Analog Devices 的 ADM3062EARMZ 的参考设计
- TPA3128D2 D类功放板
- 用于便携式媒体播放器的 3.3V DC 至 DC 单路输出电源
- LT6656AIS6-3、3V 升压输出电流电压基准的典型应用
- MC34163 外部 PNP 饱和开关稳压器的典型应用