转:http://hi.baidu.com/yedeqixian/item/36be5931536afb2ab3c0c565
1.为何ARM7中PC=PC+8
此处解释为何ARM7中,CPU地址,即PC,为何有PC=PC+8这一说法:
众所周知,AMR7,是三级流水线,其细节见图:
图表
首先,对于ARM7对应的流水线的执行情况,如下面这个图所示:
ARM7
图表

然后对于三级流水线举例如下:
图表

从上图,其实很容易看出,第一条指令:
add r0, r1,$5
执行的时候,此时PC已经指向第三条指令:
cmp r2,#3
的地址了,所以,是PC=PC+8.
可以这样说:
R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
本文详细解析了ARM7三级流水线的工作原理,并解释了为何在ARM7中PC寄存器会遵循PC=PC+8的原则。通过具体实例说明了在执行指令时,PC总是指向第三条指令的位置。

3504

被折叠的 条评论
为什么被折叠?



