美文网首页
2.三生万物 ---- 0 + 1 + 规则 --- 机器语

2.三生万物 ---- 0 + 1 + 规则 --- 机器语

作者: 牛家彬 | 来源:发表于2019-05-16 02:33 被阅读0次

    小牛在今天计算机课上,听到老师说了一句话:“同学们,咱们虽然现在用java,c编程很方便,再往前有汇编语音,可再再往前是用机器语言编程啊,把一堆0和1写在纸带上交给计算机去执行,想想都头疼...”

    课后,小牛很好奇以前的大佬到底是怎么编程的,可是怎么都想不明白,不得已去找大牛,大牛微微一笑,说:“作为中国人,道德经讲道三生外物,首先我也不了解那么深奥的内容,但从计算机的角度来说,这里的'三',可以说就是‘0 、1、规则’”,小牛听完后有点傻了,大牛继续说道:“先别蒙,就比如现在我让你用0和1表示 加减乘除四种运算,你怎么定义?”,小牛出于潜意识很快的想出:

    00 ------ +
    01 ------ -
    10 ------ *
    11 ------ /

    规则:00表示+,01表示-,依次类推

    写完之后,大牛说道:“不错,我们通过0和1,加上我们自己定义的规则,很轻易的表示了加减乘除四种状态,故生万物,亦易哉”。

    小牛恍然大悟,对大牛说:“你说的这些,我有些明白了,也就是说以前用机器语言编程的人,肯定是先有人用0和1制定了一些规则,其他的人只要遵守这些规则就可以了”。

    大牛摸了摸小牛的脑袋,“嗯,不错,其实这些规则就叫做指令集,这些指令集是也是被存储起来的,如果规则不同(指令集不同),同一段程序肯定是不能相互理解的,比如我定义加减乘除是01 001 0001 00001,如果你把你的一段加法程序交给我,我的规则里并没有00,所以并不理解你的加法程序”。

    小牛点点头,笑道:“这回我是理解了,那我们平时用的高级语言的if之类的语句,是不是也对应着一个‘跳转指令’,不单单是跳转指令,任何一个动作其实都可以用0和1来表示,理论一个指令集可以有很多指令吧,毕竟三生万物”。

    大牛道:“别着急,下面我就举一个例子,我给你写一段程序”:

    1010101
    10010001000100111100101
    11000111010001011111110000000001000000000000000000000000
    11000111010001011111100000000010000000000000000000000000
    100010110100010111111000
    10100010111111100
    1011101
    11000011

    ........
    大牛也是大汗淋漓,终于写完了,对小牛说,“这个程序怎么样?”,小牛满脸问号,“这个是程序?”,
    “对啊,你回想我们之前说的规则,这一串0和1有一部分是别人定义的规则,我们叫做CPU指令集,还有一部分是我们操作的数据,也叫作操作数”。

    CPU指令集中,有一部分叫做数据传输指令,也就是要把数据运输到某个寄存器当中,比如前两行可以解释为:

    1010101(55) ---> push %rbp :
    首先rbp入栈, BP寄存器是基址指针寄存器,是专门用来处理函数调用的。那么push %rbp就是将rbp寄存器的内容先保存入栈。

    10010001000100111100101(48 89 e5) -- > mov %rsp,%rbp
    然后mov %rsp, %rbp,将现在的%rbp的值赋值为和%rsp相等。

    其中push move之类的文字,就是汇编语音,相比前面的一堆0和1,汇编语言更直观的阐述了这种规则和数据的关系。

    今天小牛仿佛离计算机的世界更近了一步,总结下来,今天跟大牛学了很多:
    (1)道德经和牛
    (1)设计规则的人很牛
    (2)用0和1的人很牛
    (3)汇编语言更加直观的翻译了规则
    (4)规则也是一段数据,跟程序一样,都要被存储起来

    相关文章

      网友评论

          本文标题:2.三生万物 ---- 0 + 1 + 规则 --- 机器语

          本文链接:https://www.haomeiwen.com/subject/roivaqtx.html