wordpress如何加html,宁波seo推荐,oppo应用商店下载,西宁房地产网站建设请阅读【嵌入式开发学习必备专栏 】 文章目录 ARM RET 与 ERETARMv8 ERET 指令RET 与 ERET 的区别 ARM RET 与 ERET
在 ARMv8 架构中#xff0c;RET 指令用于从函数或者过程返回。它主要负责从当前过程跳转回调用者#xff0c;并恢复调用者的程序计数器 (PC) 的值。
语法RET 指令用于从函数或者过程返回。它主要负责从当前过程跳转回调用者并恢复调用者的程序计数器 (PC) 的值。
语法
RET {Xn} Xn 是一个可选的寄存器通常为 X30也称为 LR链接寄存器其中包含返回地址。如果没有指定寄存器则默认为 X30。
工作原理
将 Xn通常是 LR寄存器中的值加载到程序计数器 PC 中从而跳回到调用过程之后的地址。根据需要更新程序状态如堆栈指针 SP 和其他调用约定相关的寄存器。
示例
func: // 函数内容 RET // 返回到调用者等同于 RET X30 another_func: // 另一个函数内容 RET X29 // 如果X29寄存器中存放了返回地址则使用它返回 ARMv8 ERET 指令
ERET 指令用于从异常返回特别是从中断或陷阱处理程序返回到之前的执行上下文。ERET 还原 Exception Level (EL) 发生变化前的程序状态它通常在处理操作系统级别的代码中使用。 语法
ERET ERET 指令没有操作数。
工作原理
从 ELR_ELxException Link Register恢复程序计数器 PC。从 SPSR_ELxSaved Program Status Register恢复程序状态寄存器 CPSRCurrent Program Status Register包括标志位和执行状态例如 ARM 或 Thumb 模式。
示例
// 假设处于异常处理程序内部
// 执行 ERET 会返回到触发异常的指令之后的程序地址 ERET RET 与 ERET 的区别
RET 用于标准的函数返回而 ERET 用于从异常或中断处理程序返回。RET 只是简单地将链接寄存器 LR 的值加载到程序计数器 PC 中不会改变当前的执行级别或恢复程序状态。ERET 会加载 ELR_ELx 中的值到 PC并从 SPSR_ELx 恢复状态寄存器。它会改变处理器的执行级别通常是从更高的异常级别EL1, EL2, EL3返回到较低的应用级别EL0。ERET 是一个更复杂的指令它用于在更严格和受控的环境中切换上下文如操作系统的中断处理。