异常链接寄存器ELR(Exception Link Registers)包含异常返回地址。当处理器发生异常时,返回地址将保存在异常级别对应的ELR中。例如,当处理器将异常处理交给EL1处理时,会将异常返回地址保存在ELR_EL1中。在异常返回时,PC恢复到存储在ELR中的地址。例如,从EL1返回时,PC将恢复到ELR_EL1中存储的地址。 AArch64状态为每...
此外对应ARMv8系列,还有ELR寄存器,对应的是异常状态下的返回地址。 a. 当程序执行到异常时,异常的返回地址保存到ELR中,当然ARMv8有四种模式,EL0没有异常处理,所以只有三个ELR寄存器,处理三种异常时的返回地址。 b. AArch32到AArch64状态时,保存的是32位的地址,高8位均为0。 2.3.1 LR的地址保存 当假如程序...
esr elr lr寄存器 LR连接寄存器(Link Register,),在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。当通过BL或BLX指令调用子程序时,硬件自动将子程序返回...
②、8 个状态寄存器,包括 CPSR 和 SPSR。 ③、Hyp 模式下独有一个 ELR_Hyp 寄存器。 注:Thumb 程序中(arm指令集的一个子集,大大的节省了系统的存储空间,不是一个完整的体系结构,不能指望处理器只执行thumb指令集而不支持arm指令集),通常只能使用 r4~r7 来保存局部变量。 r12:内部程序调用暂存寄存器,也成为i...
本章和第 5 章的内容都与 ARM 处理器中 CP15 协处理器的寄存器有密切关系,所以我们这里先介绍一下 CP15 寄存器以及访问 CP15 寄存器的汇编指令。 4.1.1 访问 CP15 寄存器的指令 访问CP15 寄存器指令的编码格式及语法说明如下: 说明: :协处理器行为操作码,对于 CP15 来说, 永远为 0b000 ,否则结果未知。
ERET指令用于异常返回,返回地址和处理器状态是从当前EL(exception level)下的 ELR 和 SPSR 寄存器中恢复的。即 ELR 寄存器中的值就是BL1最后跳转的目的地址,SPSR寄存器的值就是跳转之后处理器的状态。 (1) 处理异常的流程 ARMv8的四个异常级别只能通过异常获取/返回的方式在异常等级之间跳转。
ELR(Exception Link Register):异常链接寄存器,EL1~EL3各有一个。存储了从中断返回的地址,这个咱们应用没权限用,本系列中学不到 SPSR:(Saved Processor State):EL1~EL3各有一个。保存了发生异常时的状态信息,这个咱们也用不着 浮点向量寄存器: 浮点寄存器 64位: D0 - D31 32位: S0 - S31 ...
Hyp模式下的LR为ELR,记录异常时的返回地址,其他均一致。 CortexA53 r0-r7 用来做参数传递或者发返回结果。 r8 间接的结果位置寄存器 r9-r15 暂存器 保存临时结果 r16-r17 动态链接(系统并不是所有地址都可以跳转)(链接器内部插入代码)所需要的寄存器
PSTATE:程序状态寄存器SP_ELx(x>0):在EL1/EL2/EL3 level中,如果spsel=0,则使用SP_ELx(x>0)SP_EL0 :在所有level中,如果spsel=1, 则使用SP_EL0SPSR :save program status register 备份的程序状态寄存器ELR_ELx(x>0):异常链接寄存器,记录着异常时程序的返回地址ESR_ELx(x>0) :同步异常, 异常特征...
异常链接寄存器(ELR)。 保存的处理器状态寄存器(SPSR)。 下表按异常级别标识特殊寄存器: 异常级别的特殊寄存器 程序调用标准(PCS)还定义了一个专用的帧指针(FP),通过可靠地展开堆栈,它使调试和调用关系图分析变得更加容易。 零寄存器 零寄存器的名字暗示着什么。