打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ARM7和ARM9流水对PC的影响

“PC=PC+1”,这不完全正确,PC自增一的情况指出现在无流水(non-pipeline)的情况下,这个时候取指,译码,执指都是顺序执行的。

而在有流水的情况下就比较复杂了这里用arm7和arm9为例。

arm7是3级流水。arm9是5级流水。PC在执行过程中是每次加8的。原因如下:

为便于说明问题,我们假设当前正在执行0地址处的指令,从下面的两幅图中可以清楚地得到结论。

ARM7是三级流水线,AMR7的三级流水线如下:

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

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

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

注意:ADS中PC确实是指向即将执行的指令,这个是软件处理后的结果,主要是为了用户调试程序方便。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ARM流水线、异常中断向量表、命名及版本
arm的PC指针指向何方
ARM你必须知道的事儿
【2011.03.21】ARM中断处理流程 & ARM中断处理分析
中断处理流程分析
为什么要反汇编
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服