ARMv7 寄存器详解大全( 六 )

4、取指异常返回

点击(此处)折叠或打开

  1. S1

  2. S2

  3. S3

  4. S4

当执行S1指令时 , 发生了取指异常(取指异常发生在指令获取阶段 , 但是这个需要在执行这个错误指令的时候才会触发异常) , 此时S1就应该是这个取指异常的指令 , PC为S3 LR为PC - 4即S2 。 因此 , 我们希望异常发生返回进行重新取指 , 所以PC应该赋值为S1的值即:subs pc lr #4 。

5、数据访问异常返回

  1. 点击(此处)折叠或打开S1

  2. S2

  3. S3

  4. S4

当执行S1指令发生数据访问异常的时候 , 访问异常是发生在指令结束后 , 此时正在执行的指令为S2 , PC为S4 , LR为PC-4即S3 。 因此 , 我们希望返回重新去取指访问数据 , 所以PC应该赋值为S1的值即:subs pc lr #8

推荐阅读