[ARM-register]-ARMv8的寄存器介绍
作者:互联网
在介绍寄存器之前,我们先看下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, <Xt>
(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, <Xt>
(5)、TLB maintenance system instructions
TLBI ALLE1
TLBI ALLE1IS
TLBI ALLE1OS
TLBI ALLE2
TLBI ALLE2IS
TLBI ALLE2OS
…(共78个)…
TLBI ALLE1IS{, <Xt>}
(6)、cryptographic Extension instructions
标签:32,register,registers,寄存器,ARMv8,bit,ARM,向量,instructions 来源: https://blog.51cto.com/u_15278218/2930993