额,小弟一直对cortex-m3/m4内核部分不甚理解,特意看了下权威指南.以下是书中原话:
R15为程序计数器PC,是可读可写的,读操作返回当前指令地址+4(由于三级流水线特性及同ARM7TDMI处理器兼容的需要).
额,小弟思考了下三级流水线,以下是小弟的理解,暂且不知道是否正确...
1>取指------译码------执行
2>cortex-m3每次取指都是32位的,也就是4个字节
3>所以如果以当前执行的指令为基准,取指指令应该是当前PC+8字节才对啊,为什么是PC+4???
上面3个步骤是我哪里理解出错了???还是因为其它什么原因???
恳请大神不惜赐教...谢谢...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
以后的M7,A8,A9等等这些高端处理器,根本就不是3级流水线,而是更多级的流水线,所以按照最自然的设计,读PC读到的完全不该是当前指令+4!
但是,他们必须用更复杂的各种设计,多费很多事,来保证你想读PC的时候要读到当前指令+4。以此保证对从ARM7开始的这些前辈的精确兼容。
一周热门 更多>