Tag
(
(
(
(
5.
5.1经高手指点后明白了原来这么多异常的返回地址问题只要一句话:除了数据中止以外,所有异常发生时R14保存的值都是跳转时的PC-4,只是软件原因引起的异常时执行时(PC为该指令地址+8)就发生异常跳转了,而硬件引起的异常为了保证程序安全必须等到当前指令完成后(执行目标已经指向下一个指令,即PC为该指令地址+12)才会发生跳转。
评论
· swi软件中断异常时MOVS PC,R14_svc,偏移量为0的原因在你紫体字里已经说明很清楚了啊,因为只是软件原因(swi属于这种情况)引起的异常,执行时(PC=此时为该指令地址+8)就发生异常跳转了,而R14保存的值都是跳转时的PC-4,即在swi软件中断的情况下
R14=PC-4=此时该指令地址+8-4=此时改指令地址+4,
也就是说R14保存的就是中断返回后所要接着执行的指令的地址,所以
MOVS PC,R14_svc时偏移量为0
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114074 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!