1、aarch64通用寄存器:
ARMv8-aarch64有31个64位的寄存器:x0~x31,其中x29属于帧寄存器(FP),x30属于程序链接寄存器(LR);
2、aarch64特殊寄存器:
寄存器类型 | 寄存器 |
---|---|
Zero register | XZR/WZR |
Program counter | PC |
Stack pointer | SP_EL0/EL1/EL2/EL3 |
Program status register | SPSR_EL1/EL2/EL3 |
Exception link register | ELR_EL1/EL2/EL3 |
3、PSTATE:处理器状态;不是一个寄存器,由以下几个寄存器共同组成,包括条件寄存器NZCV、SP选择寄存器SPSEL、异常等级寄存器CurrentEL等等。当有异常发生时,PSTATE将保存到SPSRs寄存器中。
4、execption entry:
<!异常类型:同步异常、异步异常即中断,包括SError/IRQ/FIQ>
- PSTATE -> SPSR_ELx
- PC -> ELR_ELx //异常链接寄存器;
- PSTATE(D,A,I,F) -> 0b1111
- 更新ESR_ELx //异常综合寄存器,用来返回异常原因;
- 选择SP_ELx
- 跳转到异常向量定义的地址
5、execption execute
6、execption return:
- 执行eret指令从异常返回
- ELR_ELx -> PC
- SPSR_ELx -> PSTATE