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
本文详细解读了ARMv8-aarch64架构的31个通用寄存器,特殊寄存器如Zeroregister、PC和SP等,以及异常处理中的PSTATE、ESR和异常流程。深入探讨了异常入口、执行和返回机制,以及相关寄存器的作用和操作步骤。
732

被折叠的 条评论
为什么被折叠?



