ARM64 registers

参考文档:《ARM Cortex-A Series Programmer's Guide for ARMv8-A》

 

一、通用寄存器

1、arm64一共有31个通用寄存器,X0~X30

                                        

其中X29,又称FP寄存器,而X30,又称LR寄存器

每一个通用寄存器都有两种表示:Xn 和 Wn,其中Xn代表64bit,Wn代表低32bit,因此读Wn,相当于读Xn的低32bit值,写Wn,相当于将其进行零扩展至64bit,然后再写到Xn中

二、特殊寄存器

1、零寄存器

分为XZR(64bit)/ WZR(32bit),当读该寄存器时,返回全0,注意:写寄存器操作被忽略

2、PC寄存器

3、SP寄存器

分为SP(64bit)/ WSP(32bit) 

每种Exception level都有自己的SP寄存器,而且总是根据target Exception level来选择,比如,有一个往EL1跳变的异常时,选择SP_EL1寄存器。

4、SPSR寄存器

Saved Processor State Register ,顾名思义,用来保存CPU状态的寄存器

如果在一个往EL1跳变的异常时,则选择SPSR_EL1来保存当前CPU状态

5、PSTATE

当执行ERET指令,从一个异常返回时,将SPSR_ELn赋值给PSTATE,以恢复发生异常前的CPU state

                                              

其中N,Z,C,V可以在EL0级别进行访问,其他的都需要在EL1或者更高,或者EL0(UNDEFINED),才可以被执行

6、ELR寄存器

Exception Link Register,顾名思义,用来保存从异常返回的地址

 

三、System registers

稍后补充

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值