arm异常中断处理中pc指向何处

《arm体系结构与编程》第九章 异常中断处理/9.2.2 从异常中断处理程序中返回

SWI和未定义指令异常中断是由当前执行的指令自身产生的。当SWI和未定义指令异常中断产生时,程序计数器PC的值还未更新,它指向当前指令后面第2条指令(???)(对于ARM指令来说+8字节;对于Thumb指令来说+4字节的位置)。

数据访问异常中断由当前执行的指令自身产生,当数据访问异常中断发生时,程序计数器pc的值已经更新,它指向当前指令后面第3条指令(???)(对于ARM指令,它指向当前指令地址加12字节的位置;对于Thumb指令,它指向当前指令地址加6字节的位置)。

 经多方查证得到如下可以解释上述疑问(???)的答案:

  1、arm为三级流水线(取指、译码、执行)结构,PC指向正在取指的地址,那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执行的指令地址是PC-8.

  2、中断返回后执行的是原执行语句的下一条语句,返回之后重建流水线

  3、虽然ARM9与ARM7的流水线级数不同,但ARM9使用了与ARM7相同的流水线执行机制,以提高兼容性(即第4条指令取指时,第1条指令执行完成),方便ARM7的代码也可以在ARM9上运行。

 

 

 

 

你可能感兴趣的:(ARM)