博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
corte-m3中的pc值的问题
阅读量:7243 次
发布时间:2019-06-29

本文共 397 字,大约阅读时间需要 1 分钟。

        在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。

        但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。
        下面来看一段测试代码:
    我们可看出,pc总是指向下一条指令,那么书中的“出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值”的关键在于“读取”2字,如果我们使用指令(如mov)读了PC,那么返回给我们地址就是当前地址+4,如果是单片机自动压栈那么就不属于使用指令读取的范畴,也就是说压入栈中的PC值就真正的值。

转载于:https://www.cnblogs.com/findstr/archive/2011/11/10/2803706.html

你可能感兴趣的文章
数据模型
查看>>
bzoj 4484 [Jsoi2015]最小表示——bitset
查看>>
OC NSString总结
查看>>
数组的遍历查找
查看>>
python对象--描述符
查看>>
问题 C: A+B Problem II
查看>>
读后感
查看>>
layer弹出框的定位
查看>>
react踩坑 - 1, componentDidMount使用
查看>>
3.Appium 安卓自动化(Andriod APP类型)
查看>>
I.MX6 Android /data 目录内容
查看>>
busybox microcom
查看>>
hdu6376 度度熊剪纸条 思维
查看>>
选择排序模板
查看>>
Ubuntu12.04 Opencv2.4.8 安装笔记
查看>>
[NodeJS] 优缺点及适用场景
查看>>
谈一谈你对js线程的理解
查看>>
div+css 怎么让一个小div在另一个大div里面 垂直居中
查看>>
poj3280(区间dp)
查看>>
DB2创建表、操作表等常用命令
查看>>