ARM中PC和x86中IP的区别

前言

最近在学ARM,对它的PC产生了疑惑,一开始是把PC类比成x86中的IP的,后面发现还是有点区别的

x86架构

在《深入理解计算机系统》一书中指出(P6)

从系统通电开始,直到系统断电,处理器一直在不断地执行程序计数器指向的指令,再更新程序计数器(PC)。

也就是说,在x86中,PC实际上是永远指向下一条待执行的指令

另外,在《汇编语言》—王爽,一书中指出,IP是指令指针寄存器,它的工作流程如下

可见,IP也是在其指向的指令被执行之后,才更新为下一条待执行的指令。因此其实质上等同于PC


小结

x86中,PC与IP实质上一致


ARM架构

在《汇编语言程序设计:基于ARM体系结构》一书中(P53),指出

寄存器R15用作程序计数器(PC),用于控制程序中指令的执行顺序。正常运行时,PC指向CPU运行的下一条指令。每次取指后PC的值会自动修改以指向下一条指令,从而保证了指令按一定的顺序执行。

划重点:每次取指后PC的值会自动修改以指向下一条指令
另外,这里只说明PC是用于控制程序中指令的执行顺序,并不是说PC执行下一条执行的指令

由此可见,x86架构和ARM架构的PC确实功能不完全一样。

考虑到ARM的流水线架构,举例ARM7的三级流水线

在这里插入图片描述
在时钟周期1取指完成后,PC=PC+4
在时钟周期2取指完成后,PC=PC+8,此时第一条指令正开始执行,PC值已经+8了
因此,实际上,在ARM中,每次当前指令执行时,PC=PC+8

总结

  • x86:PC等于下一条指令地址
  • ARM:PC等于下两条指令地址
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值