3.4. 为何ARM7中PC=PC+8

此处解释为何ARM7中,CPU地址,即PC,为何有PC=PC+8这一说法:

众所周知,AMR7,是三级流水线,其细节见图:

图 3.1. AMR7三级流水线

AMR7三级流水线


首先,对于ARM7对应的流水线的执行情况,如下面这个图所示:

图 3.2. ARM7三级流水线状态

ARM7三级流水线状态


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

图 3.3. ARM7三级流水线示例

ARM7三级流水线示例


从上图,其实很容易看出,第一条指令:

add r0, r1,$5

执行的时候,此时PC已经指向第三条指令:

cmp r2,#3

的地址了,所以,是PC=PC+8.