欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > ARM v8笔记

ARM v8笔记

2025/4/7 21:51:38 来源:https://blog.csdn.net/weixin_42438100/article/details/146822626  浏览:    关键词:ARM v8笔记

文章目录

  • 1.R52+
  • 2.ARM基本概念
    • 2.1.指令集
    • 2.2.执行状态(Execution State)
      • 2.2.1AArch64
      • 2.2.2AArch32
      • 2.3. 指令集
    • 2.4.寄存器
      • 2.4.1系统寄存器
      • 2.4.2特殊寄存器
    • 2.5.异常等级(Exception Levels)
  • 3.ARM汇编语言模块示例
  • 4. ARM汇编指令集

记录ARM V8相关的学习笔记。

1.R52+

第一个Cortex-R处理器,如Cortex-R5,是建立在Armv7-R架构上的。R52和R52+是Armv8-R架构。

2.ARM基本概念

ARM公司发布的第一代支持64位处理器的指令集和体系结构,对ARMv7的具有兼容性。

2.1.指令集

使用RISC(精简指令集),具有以下RISC特点:

  • 一组统一的寄存器;
  • 一种加载/存储体系结构,其中数据处理操作只对寄存器内容进行操作,而不是直接对内存内容进行操作;
  • 采用简单的地址模式(内容映射等),仅从寄存器内容和指令字段确定所有加载/存储地址。

2.2.执行状态(Execution State)

可以理解为两个执行容器,根据实际情况可以完成切换。
具体可参考DDI0487D_Architecture Reference Manual ARMv8-A architecture. pdf文档的“A1.3.1 Execution state”。

2.2.1AArch64

  • 提供31个64位的通用寄存器。
  • 提供64位的程序计数寄存器PC、栈指针寄存器SP以及异常链接寄存器ELR。
  • 提供A64指令集。
  • 定义ARMv8异常模型,支持4个异常等级,ELO~EL3
  • 提供64位的内存模型。
  • 定义一组处理器状态(PSTATE)用来保存PE的状态。

2.2.2AArch32

  • 提供13个32位的通用寄存器,在加上程序计数器PC、栈指针寄存器SP、链接寄存器LR
  • 支持两套指令集,分别是A32\T32(Thumb)指令集
  • 支持ARMV7 - A模型,基于PE模式并映射到ARMv8的异常模型中
  • 提供32位的模拟内存访问机制
  • 定义一组处理器状态(PSTATE)用来保存PE的状态。

2.3. 指令集

ARMv8架构根据不同的执行状态提供不同指令集的支持。

  • A64指令集:运行在AArch64状态,提供64位指令集支持。
  • A32指令集:运行在AArch32状态,提供32位指令集支持。
  • T32指令集:运行在AArch32状态,提供16和32位指令集支持。

2.4.寄存器

2.4.1系统寄存器

AArch64运行状态支持31个64位的通用寄存器,分别是x0~x30寄存器。
X0~X30:通用寄存器
SP:栈指针寄存器
PC:程序计数寄存器
在这里插入图片描述
而AArch32运行状态支持16个32位的通用寄存器。
15个通用寄存器R0~R14,一个程序指针PC寄存器
在这里插入图片描述
处理器状态(Processor State)
在ARMv7架构中使用CPSR寄存器来表示当前处理器的状态,而在AArch64里使用处理器状态寄存器来表示,简称PSTATE条件标志位(The Condition flags)
参考:“B1.2.2 Process state, PSTATE”,部分条件标志位如下:
在这里插入图片描述
具体系统寄存器可参考DDI0487D_Architecture Reference Manual ARMv8-A architecture. pdf文档的“D12 AArch64 System Register Descriptions”。

2.4.2特殊寄存器

在这里插入图片描述
零寄存器:寄存器值全为0,其中XZR是64bit,WZE是32bit
SP寄存器:栈指针,SP_EL0SP_EL3分别是EL0EL3下的栈指针寄存器
SPSR寄存器:保存处理状态寄存器(Saved Process Status Register),类似ARMv7的CPSR寄存器。
在这里插入图片描述

2.5.异常等级(Exception Levels)

异常等级确定了处理器当前运行的特权级别,类似ARMv7架构中特权等级。

  • EL0:用户特权,用于运行普通用户程序(用户态)。
  • EL1:系统特权,通常用于运行操作系统(内核态)。
  • EL2:运行虚拟化扩展的虚拟监控程序(Hypervisor)。
  • EL3:运行安全世界中的安全监控器(Secure Monitor) 。
    参考“D1.1.1 Typical Exception level usage model”

3.ARM汇编语言模块示例

ARM汇编语言模块由以下几个部分组成:
①ELF sections (defined by the AREA directive).
②Application entry (defined by the ENTRY directive).
③Application execution.
④Application termination.
⑤Program end (defined by the END directive)
在这里插入图片描述

4. ARM汇编指令集

ARM V8 A32常用指令集

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词