小速学编程:CPU的结构、指令与程序初探( 二 )


陈小速忽然有了灵感 , 他大声说道:“吴大哥 , CPU看起来挺傻的嘛 , 它每次就干一件特简单的事 , 而且还一板一眼的 。 是不是这样意思呢 , 哈哈!”
“没错 , ” 吴进笑着表示了肯定 , “CPU的单个指令都是很简单的操作 。 它的特长在于快 , 就说加法运算 , 它一秒之内就可以算数十亿次 , 这个你比不了吧?”
“那是 。 ” 陈小速吐了吐舌头 。
小速学编程:CPU的结构、指令与程序初探文章插图
程序“再往下思考一下 , ” 吴进提示着说 , “你现在知道了指令集 , 那么计算机是怎样完成复杂功能的呢?”
“我想一想 。 ” 陈小速没有马上回答 , 而是陷入了思索中 。
良久 , 陈小速抬起头来 , 有些怯意地说:“我想了个大概 , 不知道对不对?”
“尽管说出来 , 这才是你进步的时候 。 ” 吴进鼓励着 。
“我这是这么想的 , 既然两个数相加 , 需要四条指令来完成 。 那么三个数相加呢?应该是先算出前两个数的结果 , 才和第三个数相加 , 那就要增加四条指令了 。 ” 陈小速说着自己的想法 , 吴进不住地点头 。
“那么乘法呢?就可以看成是n个数的相加 , 也可以转变成多条加法指令来完成 。 ” 陈小速自己好像也越说越自信了 , “所以 , 我觉得计算机完成复杂功能的运算 , 应该是把一个大任务拆解成一条一条可以让CPU执行的指令 。 这个指令数量可能会很多 , 但没关系 , CPU它不是快嘛 。 ” 说到最后 , 陈小速还开起了玩笑 。
吴进了竖了个大拇指 , 说:“你理解得很不错 , 你说的其实是计算机科学中一个很重要的基本思想 。 就是分治思想 , 将一个大问题拆解成若干可以解决的小问题 , 从而得到问题解 。 ”
这回倒将陈小速闹了个大红脸 , 他急忙说:“别 , 吴大哥 , 我就是随口瞎掰的 。 ”
“那再问一句了 , 这些完成了复杂功能的指令放在一起 , 是什么?” 吴进继续提问 。
“指令清单 , 指令列表 , 还是啥的……” 陈小速自己都觉得不对了 。
“这就是程序 。 ” 吴进着重强调了最后两个字 。
听到这里 , 陈小速忽然觉得天顶好像被炸开 , 一线阳光洒了进来 , 周围的桌椅板凳都变得清晰起来 。 他不知道为什么 , 想起了《黑客帝国》里Neo第一次看到Matrix的本质一样 。
小速学编程:CPU的结构、指令与程序初探文章插图
结语“那我们编程序 , 就是把一个大任务 , 分解成一条一条的指令 , 然后写下来吗?” 陈小速喃喃自语 , 又像在提问 。
“可以这么理解 , 但直接写成CPU指令的话 , 那人类到现在只怕还停留在做四则运算的水平 。 因为那样写起来太单调 , 都是重复性工作 , 工作量太大 。 ” 吴进解释着 。
他继续说道:“这就是为什么我们需要编程语言了 , 你下次过来 , 我们就可以好好讨论一下编程语言的话题了 。 回去别忘了跟你同学讲解今天的内容啊 。 ”
陈小速用力地点着头 。 他真想赶紧来学下一课啊 。
小速学编程:CPU的结构、指令与程序初探文章插图