ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[ARM-register]-ARMv8的寄存器介绍

2021-06-21 14:52:22  阅读:378  来源: 互联网

标签:32 register registers 寄存器 ARMv8 bit ARM 向量 instructions



★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★

在介绍寄存器之前,我们先看下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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有