您的位置:首页 > 其它

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

2013-04-12 17:56 232 查看
《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上运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: