ARMV8 - AArch64 - 通用寄存器

说明

  • 在深入一点了解了系统调用以及非安全world(REE)/安全world(TEE)切换时参数传递和结果返回的实现原理(通过通用寄存器实现),对通用寄存器的使用有了一个全新的认识,对知识做个总结。

简介

  • ARMV8架构CPU AArch64状态下提供了31个64位通用寄存器:X0 ~ X30。

通用体现

  1. 不同于特殊寄存器(每一bit可能都有特殊作用),通用寄存器本身没有任何作用(就是一个64位存储器),其作用是由使用体现。
  2. 任意时间任意环境(任意特权等级,任意安全等级,用户态/内核态)都可以使用这些通用寄存器,没有任何访问限制。
    1. 应用层调用系统调用(应用态和内核态切换),参数传递和结果返回等都是使用通用寄存器实现。
    2. 应用层程序执行,函数调用时参数传递,也是使用通用寄存器实现。
    3. REE与TEE通信,需要做非安全world和安全world切换,异常等级切换等也是使用通用寄存器传递参数和运行结果。
    4. 任何异常等级中函数执行也是使用这些通用寄存器,切换异常等级也不会丢失。
  • 重点:通用寄存器是参数传递,返回结果等一些通用行为使用的寄存器,在任何场景,环境下(用户态/内核态切换,安全world/非安全world切换)都是一样,没有其它寄存器。

32位形态

  • X0 ~ X30是64位寄存器,也可以作为32位寄存器使用,其32位形态(W0 ~ W30)取自相应64位寄存器(X0 ~ X30)的低32位,例如:W0映射到X0的低32位,W1映射到X1的低32位。
  • 读写其32位形态行为如下:
  1. 读取,从32位寄存器(W0-W30)读取时,忽略相应64位寄存器(X0-X30)高32位,并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值