为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2019-11-21 15:25:08
我听说了鸡肉,鸡蛋和自举。我有几个问题。是什么写了第一个将东西转换成二进制指令的编译器?汇编程序是否已编译或转换为二进制指令?...我很难相信他们用二进制编写了编译器。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

汇编指令(通常)是对操作码的直接映射,操作码是可以由处理器直接解释的机器代码的(多)字节值。通过从表中查找操作码来直接编写程序是很有可能的(例如,该表用于6039微处理器),该表列出了具有匹配汇编指令的程序,并手动确定事物的内存地址/偏移量像跳。


最初的程序正是以这种方式完成的-手写操作码。


但是,在大多数情况下,使用汇编程序来“汇编”汇编代码会更简单,该汇编代码会自动执行这些操作码查找,并且有助于计算命名跳转标签的地址/偏移量等。


最初的汇编程序是手工编写的。然后,可以使用这些汇编器来汇编更复杂的汇编器,然后将其用于汇编为高级语言编写的编译器,依此类推。反复编写工具以简化下一组工具的创建的过程称为引导(如David Rabinowitz在其回答中所述)。


查看完整回答
反对 回复 2019-11-21
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

请阅读有关编译器引导和编译器编写历史的信息


这个想法是直接用机器代码编写一个非常简单的编译器,使用它编写更复杂的编译器,使用第二个编译器构建第三个编译器,依此类推,直到您拥有功能齐全的编译器为止。


查看完整回答
反对 回复 2019-11-21
?
慕后森

TA贡献1802条经验 获得超5个赞

鸡蛋早于鸡肉。大多数“鸡和蛋”问题的答案都是相同的:进化。某些人也难以相信生物进化,但不相信不是一个论点(谷歌argumentum ad ignorantiam)。


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


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 945 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信