ARM保存中断时,为什么使用“sub lr, lr, #4”

来源:互联网 发布:淘宝模板代码教程 编辑:程序博客网 时间:2024/06/05 20:22

1. 首先要谈流水线,在arm执行过程中一般分为取指,译码,执行阶段

  也就是假设当前                                                                      第一条指令在执行阶段

                                                              第二条指令在译码阶段

                          第三条指令在取指阶段

  当前正在执行的指令地址为pc-8,第二条就为pc-4,而pc现在真正指向已处于pc位置

 

2. 一般pc在发生中断时lr保存的是当前的pc值,这里pc值是多少呢??

     当发生中断肯定保存的pc是第三条指令,而我们从中断返回肯定不是执行第三条指令,而是紧接着的第二条指令,所以应该保存的 lr = pc - 4,但是当执行到此位置时pc值已经改变,肯定不对,还好发生中断时 mov lr,pc 所以这里就可以直接使用 sub lr,lr,#4

原创粉丝点击