《汇编程序设计与计算机体系结构:软件工程师教程》 —2.3.3 指令的执行

举报
华章计算机 发表于 2019/12/04 11:37:30 2019/12/04
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第2章,第2.3.3节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

2.3.3 指令的执行

要执行指令(例如 ADD)必须遵循一系列步骤,这些步骤合起来构成指令执行周期(Instruction Execution Cycle)。开发者可能会觉得ADD 看上去只是一条指令而已,应该只需要一步就能执行完,但实际上要执行这条指令必须完成很多子任务,或者说历经很多阶段。从最宏观的角度看,可以像图 2-10 这样将执行过程划分成三大阶段,然而当前某些高端的处理器实际上会经过 20 个乃至更多个阶段。因此,开发者虽然只是简单地用 ADD 指令把两个值加起来,但在幕后却有可能要经过 20 个步骤才能走完指令执行周期,从而得出两数之和。

 image.png

图 2-10 指令执行周期中的三大阶段

指令执行周期一般表示成 Fetch(获取)、Decode(解码)及 Execute(执行)这三个大的阶段。在获取阶段CPU 会把将要执行的(也就是 rip/eip 所指向的)指令取出来。在解码阶段CPU 要判断这是一条什么样的指令,它需要操作哪些数据。为此,它会查看指令码中的二进制位以了解该指令的类型(ADD、SUB,还是 MOV)以及是否包含操作数。如果包含,那还需要把操作数也获取过来。将所有的数据都获取到并加以解码之后CPU 就可以执行这条指令了。如果执行之后产生了结果(例如 ADD 及 SUB 指令),那么 CPU 会把该结果保存到适当的地方(例如寄存器或内存)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。