ARMv8架构特殊寄存器介绍-0

本文介绍了ARM架构中的零寄存器、sp寄存器(在ARMv8中与异常级别关联)、以及ProgramCounter(PC)寄存器在不同环境下的使用,包括堆栈管理、指令操作限制和性能优化。
摘要由CSDN通过智能技术生成

一、zero 寄存器

零寄存器用作源寄存器时读取零,用作目标寄存器时丢弃结果。您可以在大多数指令中使用零寄存器,但不是所有指令。

二、sp寄存器

在ARMv8架构中,要使用的堆栈指针的选择在某种程度上与Exception级别。默认情况下,异常为目标选择堆栈指针异常级别,SP_ELn。例如,对EL1采取异常将选择SP_EL1。每一个异常级别有自己的堆栈指针,SP_EL0、SP_EL1、SP_EL2和SP_EL3。

当在AArch64中处于EL0以外的异常级别时,处理器可以使用:
  • 与异常级别(SP_ELn)相关联的专用64位堆栈指针。

  • 与EL0 (SP_EL0)相关的堆栈指针。
    EL0只能访问SP_EL0。

    在这里插入图片描述后缀“t”表示选择SP_EL0堆栈指针。h后缀表示SP_ELn堆栈指针被选中。SP不能被大多数指令引用。然而,某些形式的算术指令,例如ADD指令,可以对当前栈指针进行读写调整函数中的堆栈指针。

	例如:
	ADD SP, SP, #0x10 //将SP调整为当前值之前的0x10字节

三、Program Counter寄存器(PC)
原始ARMv7指令集的一个特点是使用了R15,即程序计数器(PC)作为通用寄存器。个人电脑实现了一些聪明的编程技巧,但它介绍了编译器的复杂性和复杂管道的设计。直接删除在ARMv8中访问PC使返回预测更容易,并简化了ABI规范。

PC永远不能作为命名寄存器访问。它的用法隐含在某些指令中,例如与pc相关的负载和地址生成。不能将PC指定为数据的目的地处理指令或加载指令。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值