我对SVC指令后svc模式程序的返回过程感到困惑。假设当前处理器运行在SVC模式下,然后它被svc指令的软件中断中断,硬件将帮助将CPSR保存到SPSR_svc中,并将svc处理程序加载到PC中,将中断的程序地址加载到LR_svc中。要返回到SVC模式下被中断的正常程序,我们需要将LR_svc加载到PC,并将SPSR_svc加载到CPSR中。
我的问题是,在svc处理程序中,LR_svc被改变了,它的上下文是它被中断的程序地址,所以当程序返回到正常的SVC模式程序后,程序的LR被改变了,程序如何返回到它被调用的函数?
发布于 2018-07-09 17:31:13
因此在程序返回到正常
模式程序之后,程序的LR被改变
错误的假设。LR是为SVC模式存储的,因此在SVC处理程序中更改它不会更改用户模式的寄存器值。
https://stackoverflow.com/questions/51232851
复制相似问题