Arm——AArch64简介

本文详细介绍了AArch64架构中的寄存器,包括一般寄存器、栈指针、链接寄存器和程序计数器。此外,还阐述了异常级别的概念,从EL0到EL3,以及在异常处理中的角色。条件执行部分提到了条件标志如何影响指令执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AArch64 state的寄存器

寄存器分为一般寄存器和特殊寄存器,另外一些寄存器在特权执行模式下才能使用。

  • 31个64位的一般寄存器X0-X30,通过W0-W30访问其中的低32位.
  • 四个栈指针寄存器SP_EL0,SP_EL1,SP_EL2,SP_EL3.
  • 三个异常链接寄存器ELR_EL1,ELR_EL2,ELR_EL3.
  • 三个保存程序状态寄存器,SPSR_EL1,SPSR_EL2,SPSR_EL3.
  • 一个程序计数器PC.

除了三个程序状态寄存器SPSR是32位的,其他都是64位的。
没有W31或X31寄存器。取决于指令,寄存器31通常是栈寄存器或者零寄存器。当被用作栈寄存器时,用SP引用它,当用作零寄存器时,用WZR(32位)或XZR(64位)引用它。

Exception levels,异常级别

Armv8有4个异常级别,从EL0到EL3,EL3是最高的异常级别,有最高的执行权限。

  • EL0: 应用程序.
  • EL1: 操作系统内核.
  • EL2: Hypervisor,虚拟机监控器.
  • EL3: 安全模式,TrustZone.

当发生异常进入到更高的异常级别时,执行状态可以不变,也可以从AArch32变为AArch64.
当返回到更低的异常级别时,执行状态可以不变,也可以从AArch64变为AArch32.
异常级别只会在发生异常或从异常返回时改变。

Link registers,链接寄存器

在AArch64状态,Link Register(LR)存储了返回地址,实际映射到寄存器30,也可以被当做普通寄存器如果返回地址存到了栈里的话。LR与E

### aarch64 是否为 ARM 架构的指令集 aarch64ARM 架构的一个重要组成部分,它是 ARMv8 及更高版本中定义的 64 位执行状态下的指令集[^1]。ARMv8 是第一个支持 64 位计算的 ARM 架构版本,在此之前,ARM 主要专注于 32 位架构(称为 AArch32)。AArch64 提供了一组全新的寄存器和指令设计,旨在提高性能并简化软件开发。 #### 关键特性对比 - **AArch64ARM 的关系** AArch64ARM 架构的一部分,专为 64 位操作而设计。它不仅扩展了原有的功能,还改进了许多方面,例如更大的通用寄存器数量(从 16 个增加到 31 个),以及更高效的分支预测机制[^4]。 - **命名差异解释** 虽然 `arm64` 和 `aarch64` 经常互换使用,但实际上两者指的是同一概念的不同侧面。`arm64` 更倾向于描述整个 64 位 ARM 生态系统,而 `aarch64` 则特指 ARMv8 中的具体执行模式及其对应的指令集[^1]。 #### 实际应用案例 在实际部署场景下,像 Debian Pi Aarch64 这样的项目专门针对运行在 AArch64 模式的硬件进行了优化,从而能够充分发挥现代 ARM 设备的能力,比如树莓派系列或其他基于 ARM 的单板计算机[^2]。 以下是展示如何利用 C++ 结合内联汇编调用 AArch64 特定指令的小型代码片段: ```cpp #include <iostream> int main() { int value = 0; __asm__ volatile ( "ldr %w[value], [%src]\n\t" // 使用 LDR 指令加载数据至寄存器 : [value] "=r"(value) : [src] "r"(&value) : "memory" ); std::cout << "Loaded Value: " << value << std::endl; return 0; } ``` 上述程序展示了通过内联汇编访问内存的方式,其中运用到了典型的 AArch64 数据传输指令——LDR (Load Register)[^4]。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值