热身完毕,正式出发 !
回到那个从1加到100的题目, 我们的指令如下所示,CPU需要依次执行(除非遇到跳转指令), 直到结束:
指令1 : 把数字0 放到 编号为 #1 的格子里
指令2 : 把数字1 放到 编号为 #2 的格子里
指令3 : 把#1号格子的数取出放入CPU寄存器R1 (即 R1的初始值为0)
指令4 : 把#2号格子的数取出放入CPU寄存器R2 (即 R2 的初始值为1)
指令5 : 把R2的值和100 比较, 如果小于等于100,执行第6个指令, 否则执行第9个指令
指令6 : 把R1和R2的数据加起来, 结果放入R1
指令7 : 把R2的数值加1
指令8: 跳转到第5个指令
指令9: 把R1的值写回到 编号为 #1的格子里
(注:#1号格子的值就是结果)
这里提示一下: R2表示的就是从1到100这些数字, R1存放的就是中间和。
现在,请你在脑子里边模拟一下这个过程, 看看程序能不能成功结束, 把最终结果放到#1号格子里。
如果觉得脑子不够用, 建议拿一个纸和笔, 把自己当成CPU, 把上面的这些指令手工的执行一遍, 体会一下这个过程。
如果你是非科班出身,并且能迅速的理解上面这些指令是如何完成从1到100的加法的, 恭喜你, 你很适合学习编程, 光明的前途在前面向你招手。
我们上面所说的指令和汇编非常相似, 这是一种非常贴近机器, 非常“低级”的计算机语言。
用这种语言来编写大型程序,会把人活活累死。
当然话也不能那么绝对, 对于那些大神级别的程序员来说, 汇编也是小菜一碟。 Ken Thompson 和 Dennis Ritchie 不就用汇编写了第一版的Unix操作系统吗? 求伯君不就用汇编写了WPS吗?
对于普通人来说,大神们给我们创造了高级语言让我们使用, 如果我们用高级语言把上面的例子再写一遍, 你应该很容易能看明白了: