svc指令后的SVC模式程序的返回地址

时间:2018-07-08 14:16:37

标签: arm

我对svc指令后SVC模式程序的返回过程感到困惑。假设当前处理器在SVC模式下运行,那么它会被svc指令的软件中断所中断,硬件将帮助将CPSR保存到SPSR_svc中,并将svc处理程序加载到PC中,将被中断的程序地址加载到LR_svc中。要返回被中断的SVC模式普通程序,我们需要将LR_svc加载到PC中,并将SPSR_svc加载到CPSR中。

我的问题是,在svc处理程序中,LR_svc已更改,它的上下文是被中断的程序地址,因此,在程序返回到正常的SVC模式程序之后,该程序的LR已更改,该程序如何返回到该函数的调用位置??

1 个答案:

答案 0 :(得分:0)

  

因此,在程序返回到正常的SVC模式程序之后,将更改程序的LR

错误的假设。 LR用于SVC模式,因此在SVC处理程序中对其进行更改不会 not 更改用户模式的寄存器值。