ARM64 registers

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

 

一、通用寄存器

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

                                        ARM64 registers_第1张图片

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

ARM64 registers_第2张图片

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

二、特殊寄存器

ARM64 registers_第3张图片

1、零寄存器

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

ARM64 registers_第4张图片

2、PC寄存器

3、SP寄存器

分为SP(64bit)/ WSP(32bit) ARM64 registers_第5张图片

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

ARM64 registers_第6张图片

4、SPSR寄存器

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

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

ARM64 registers_第7张图片

5、PSTATE

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

                                              ARM64 registers_第8张图片

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

6、ELR寄存器

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

 

三、System registers

稍后补充

你可能感兴趣的:(ARM,arm64,AARCH64,ARMV8)