pc解读2:程序流程控制

在我们明白了我们用计算机的唯一目的是数据处理之后,我们开始给数据铺路。我们设计了总线,将将各个设备连接到总线上,再设计类似“红绿灯”的规则,控制同一时刻,数据流动不产生混乱,同时我们开始对总线上的数据存储空间进行编址,这样cpu设备就可以和这些地址空间交换数据。

更强大的做法是,我们设计了指令来控制cpu与其他设备进行数据交互,以及cpu内部的算数运算和逻辑运算。这样通过计算机指令的组合基本上就能完成所有的功能了。

但是,这些计算机指令的集合如何让cpu自己去顺序执行呢?他们巧妙的设计了指令指针寄存器这么个东西。指令指针寄存器指向的是内存中需要执行的下一条指令的地址。每执行一条指令,指令指针寄存器就自动指向下一条指令。这样cpu就可以机械的循环的去工作了。这里面隐藏的一个问题是指令的长度有不同,有的指令没操作数,可能就1个字节,有的指令后面可能带了操作数,不止一个字节。这里面需要区别对待。但这也有巧妙的实现,就是前一条指令读了多少个字节,那么下一条指令就向后偏移多少字节就不会有错了。

是不是这样就万事大吉了呢?还不行。我们还需要分支和循环控制。这个用来帮助程序员写出更优雅的代码,而不是从1加到100要写100条指令。而且,为了增加程序的适应性,程序编写的时候并不知道程序在以后运行中面对的是什么场景,在程序中需要根据不同的背景需求执行不同的代码,这个就需要分支。

分支和循环,都是通过跳转指令来实现。一般cpu提供了条件跳转和无条件跳转指令来实现。分支和循环的控制通过条件跳转来实现。所谓条件跳转,就是在cpu中添加了状态寄存器,在这个寄存器中设置了标注位,在条件跳转指令中有一个跳转的地址,在执行的时候先判断标志位,如果符合就跳转。如果不符合就什么也不做,执行下一条指令。往往在程序中需要跳转的时候,我们先执行会影响标志位的“判断”指令,再执行条件跳转,即可实现我们的需求。这点只在汇编语言中需要考虑,在高级语言中已经用自然语言屏蔽了底层实现原理。

有了这些流程控制指令,cpu基本上就能在程序指令控制下完成各种业务需求了,程序员也就能够通过编写程序让计算机完成各种任务,这是一个伟大的创造。使得计算机硬件越来越通用,而计算机软件越来越强大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值