代码之家  ›  专栏  ›  技术社区  ›  Shawn Mclean

第一个编译器是如何编写的?

  •  193
  • Shawn Mclean  · 技术社区  · 16 年前

    是什么编写了第一个将某些内容转换为二进制指令的编译器?

    …我很难相信他们用二进制编写了编译器。

    6 回复  |  直到 11 年前
        1
  •  150
  •   Lucas Pascal T.    6 年前

    汇编指令(通常)是到操作码的直接映射,操作码是机器代码的(多)字节值,可以由处理器直接解释。通过从表中查找操作码(例如 this one for the 6039 microprocessor 例如),将它们与匹配的汇编指令一起列出,并手动确定跳跃等事情的内存地址/偏移量。

    第一个程序就是以这种方式完成的——手写操作码。

    然而,大多数时候,使用汇编程序来“编译”汇编代码更简单,它会自动进行这些操作码查找,并有助于计算命名跳转标签的地址/偏移量等。

    第一批装配工是手写的。然后,这些汇编器可用于组装更复杂的汇编器,然后可用于组装为高级语言编写的编译器,等等。迭代编写工具以简化下一组工具创建的过程称为(正如David Rabinowitz在他的回答中提到的那样) bootstrapping .

        3
  •  42
  •   Jim Balter    10 年前

    鸡蛋早于鸡。大多数“鸡和蛋”问题的答案都是一样的:进化。有些人也很难相信生物进化,但不相信并不是一个论点(谷歌论证)。

    直接回答你的问题:第一个编译器是(由人类)用 assembly language --一个名为汇编程序的程序会将汇编语言翻译成二进制;这是一个比编译简单得多的过程,因为汇编语言只是机器语言的一种符号形式,它使用操作码名称而不是数字,用符号表示地址,等等。许多后续的编译器也是用汇编语言编写的。但第一个C编译器是修改后的B编译器,它是用 B 第一个B编译器是用 TMG 用于编译该B编译器的TMG编译器是用PDP-7汇编语言编写的。

        4
  •  27
  •   Dinah SLaks    15 年前

    沃兹在一次公开演讲中说,当他开始时,他买不起编译器,所以他在纸上手工编译成二进制。如果你想看到更狂野的东西,请阅读以下条件 Bill Gates and Paul Allen wrote the BASIC for the Altair 8800.

    CODE by Charles Petzold The Elements of Computing Systems 只需具备编程的基本知识,这些非常容易理解的书就会让你从上到下了解计算机。显然,一个人不能得到补偿。sci。或者仅仅读了两本书就获得了EE学位,但我可以说,作为一名自学成才的程序员,我错过了正式的培训:这些书震撼了我的世界!

        5
  •  12
  •   Michael Burr    16 年前

    第一批程序是用机器码(不是汇编语言)编写的——使用开关将实际数字插入计算机内存。我们已经走了很长的路。..

    有时,这种情况仍然会在很小的程度上发生——修补小代码或创建链接。我记得在Basic字符串中输入数字,然后在早期的micros上作为小而快速的子程序执行。我还记得在PDP-11的前面板上切换开关,将引导加载程序输入其内存中,用于大学课程。

    这些程序有时会被用来处理文本文件以创建其他程序,瞧,编程语言就这样被创建了。

        6
  •  10
  •   Jim Balter    7 年前

    是什么编写了第一个将某些内容转换为二进制指令的编译器?

    A-0 system :

    1952年,Grace Hopper完成了她的第一个Sperry编译器,即A-0。A-0系统是一组指令,可以将符号数学代码翻译成机器语言。在制作A-0时,她把多年来收集的所有子程序都录了下来。每个例程都有一个呼叫号码,这样机器就可以在磁带上找到它。“我所要做的就是写下一组电话号码,让电脑在磁带上找到它们,把它们带过来并做加法。这是第一个编译器,”格雷斯如是说。

    推荐文章