V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fim8
V2EX  ›  问与答

一个费解了我很长时间的问题,软件的最底层是什么?

  •  
  •   fim8 · 2011-03-24 23:48:09 +08:00 · 5692 次点击
    这是一个创建于 4778 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可能我的问题比较小白,但真的困扰了我好久,请教过老师,也无法得到答案。

    操作系统正式控制硬件之前,是由BIOS负责所有的硬件接管。就在这一层上有不解的地方。

    硬件究竟是如何和软件打上交道的,程序的最底层就是101010这样的机器码...对应着电流的开关。

    有人说:“1表示A,01表示B,这个是规定好了的”,但这规矩是谁定的呢?可能多看看汇编会使我理解的更好一些。。
    16 条回复    1970-01-01 08:00:00 +08:00
    fim8
        1
    fim8  
    OP
       2011-03-24 23:50:35 +08:00
    资料说:

    汇编语言 → 机器语言( 0 ,1 ) → 机器识别 → 执行

    至于0和1 是制造时就设计好的 通则是1 断则是0

    那 汇编语言 又是怎么翻译成 机器语言的呢?这个翻译的工作是由什么程序来负责的呢。这个程序又是由什么程序来写的呢?

    进到死循环了。。。。
    levn
        2
    levn  
       2011-03-25 00:19:24 +08:00
    summic
        3
    summic  
       2011-03-25 00:34:19 +08:00
    这个可以问问 @Sainias 同学,她在电路板上用些开关、led屏、二极管等等做过一个计算器
    obiwong
        4
    obiwong  
       2011-03-25 00:34:51 +08:00 via iPhone
    @fim8 软件的最底层是硬件。

    第一个汇编器是人纯手工用0101写的。也就是说第一台汇编器是人的大脑。
    cloudbeyond
        5
    cloudbeyond  
       2011-03-25 00:50:09 +08:00
    靠着仅有的数字电路跟汇编知识回答一下,估计不太准确,但是差不多,欢迎高手拍砖~
    编程语言按照等级大概能分成2种,低级语言跟高级语言,汇编是低级语言,C/C++等等都是高级语言。
    他们写出来的程序最后能被机器执行,都是要转换成机器语言的就是 0跟1,这个过程会需要一个叫编译器的东西来帮忙实现,每种语言都有他自己的编译器,汇编语言也是如此,写完汇编程序是需要编译一下的,编译器会把你的程序翻译成 01代码,然后再执行。
    基本就是这个过程了。编译器一般就是汇编,C写出来的。
    Leo
        6
    Leo  
       2011-03-25 00:51:23 +08:00
    就好比宇宙起源的问题一样,越想越纠结。
    时常感叹人类的伟大,从电路板开关到华丽通人性的界面操作,是个不可思议美妙的过程。
    chone
        7
    chone  
       2011-03-25 01:05:00 +08:00
    如果在没有汇编语言翻译器(语言处理程序,后面为了避免混乱成为编译器)的情况下,当然是用下层的机器语言来写汇编程序。然后如果已经有了能够把汇编语言转换为机器码的编译器,你也可以用汇编语言来写新的编译器。关键的是只用机器码才能被硬件识别和执行,不管什么样的形式什么样的语言最终都要通过各种不同的编译器将这些代码转换为机器码。
    要注意的是汇编语言虽然是机器语言的符号语言,但是他并不是一个一定要经过的层次,从某种程度上他和其他的高级语言是属于同一个层级的,所以即使不用汇编语言,只要是能操作底层硬件的语言都能和汇编语言一样用来写操作系统(比如linux用的就是c语言)。
    Weakdancer
        8
    Weakdancer  
       2011-03-25 02:01:38 +08:00
    推荐《编码的奥密》,另外有条件的话动手diy点东西(电子控制)的同时进行学习是最好的,当你没有亲自尝试过的时候一切都看上去是无法理解的。
    momo5269
        9
    momo5269  
       2011-03-25 02:01:42 +08:00
    @chone 非常感谢的说
    sinxccc
        10
    sinxccc  
       2011-03-25 03:40:51 +08:00
    同推荐 "Code" http://book.douban.com/subject/1494026/

    这本书可以解开你帖子里的所有疑惑。
    9hills
        11
    9hills  
       2011-03-25 09:21:14 +08:00
    这样的话lz不要去看汇编,而要看计算机组成原理。。
    skymountain
        12
    skymountain  
       2011-03-25 09:29:45 +08:00
    老实说,问这种问题,说明你对计算机还完全没有理解。
    没入门的人,或者老老实实去看基础书籍,或者干脆不要想这些东西,没意义的。
    nikejaycn
        13
    nikejaycn  
       2011-03-25 10:54:58 +08:00
    学习了,话说我也不大懂。
    fim8
        14
    fim8  
    OP
       2011-03-25 12:26:13 +08:00
    好的,谢谢大家。
    fim8
        15
    fim8  
    OP
       2011-03-25 12:33:24 +08:00
    @levn 谢谢,这个我大致看懂了,CPU的工艺真强悍。压缩成这么小的一块。。
    lesscome
        16
    lesscome  
       2011-03-25 13:09:53 +08:00
    @Weakdancer 《编码的奥密》+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2887 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:28 · PVG 23:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.