您的位置:首页 > 其它

关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释

2016-11-19 21:56 246 查看
ARM7是三级流水线,AMR7的三级流水线如下:
执行

指令地址=0
 
 
 
 
 
取指

PC = 4
解码
执行

指令地址=4
 
 
 
 
取指

PC = 8
解码
执行

指令地址=8
 
 
 
 
取指

PC = 12
解码
执行

指令地址=12
 
 
 
 
取指

PC = 16
解码
执行

指令地址=16
 

ARM9是五级流水线,ARM9的五级流水线如下:
执行

指令地址=0
 
 
 
 
 
取指

PC = 4
解码
执行

指令地址=4
缓存/数据
回写
 
 
取指

PC = 8
解码
执行

指令地址=8
缓存/数据
回写
 
 
取指

PC = 12
解码
执行

指令地址=12
缓存/数据
 
 
 
取指

PC = 16
解码
执行

指令地址=16
 

        R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;

       可见,ARM9和ARM7中都是PC=当前执行指令地址+8的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级。

转自:http://blog.csdn.net/csuwzc/article/details/6567754
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: