在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。 但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。 下面来看一段测试代码:
本文共 397 字,大约阅读时间需要 1 分钟。
在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。 但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。 下面来看一段测试代码:
转载于:https://www.cnblogs.com/findstr/archive/2011/11/10/2803706.html