ARM体系的各种异常分析

Tag

5.

5.1经高手指点后明白了原来这么多异常的返回地址问题只要一句话:除了数据中止以外,所有异常发生时R14保存的值都是跳转时的PC-4,只是软件原因引起的异常时执行时(PC为该指令地址+8)就发生异常跳转了,而硬件引起的异常为了保证程序安全必须等到当前指令完成后(执行目标已经指向下一个指令,即PC为该指令地址+12)才会发生跳转。

评论

· swi软件中断异常时MOVS PCR14_svc,偏移量为0的原因在你紫体字里已经说明很清楚了啊,因为只是软件原因(swi属于这种情况)引起的异常,执行时(PC=此时为该指令地址+8)就发生异常跳转了,而R14保存的值都是跳转时的PC-4,即在swi软件中断的情况下
R14=PC-4=此时该指令地址+8-4=此时改指令地址+4
也就是说R14保存的就是中断返回后所要接着执行的指令的地址,所以
MOVS PCR14_svc时偏移量为0

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114074 人正在系统学习中

来源:知秋贺

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年5月2日
下一篇 2012年5月2日

相关推荐