-
30秒到达战场
汇编指令(通常)是对操作码的直接映射,操作码是可以由处理器直接解释的机器代码的(多)字节值。通过从表中查找操作码来直接编写程序是很有可能的(例如,该表用于6039微处理器),该表列出了具有匹配汇编指令的程序,并手动确定事物的内存地址/偏移量像跳。最初的程序正是以这种方式完成的-手写操作码。但是,在大多数情况下,使用汇编程序来“汇编”汇编代码会更简单,该汇编代码会自动执行这些操作码查找,并且有助于计算命名跳转标签的地址/偏移量等。最初的汇编程序是手工编写的。然后,可以使用这些汇编器来汇编更复杂的汇编器,然后将其用于汇编为高级语言编写的编译器,依此类推。反复编写工具以简化下一组工具的创建的过程称为引导(如David Rabinowitz在其回答中所述)。
-
慕标琳琳
请阅读有关编译器引导和编译器编写历史的信息这个想法是直接用机器代码编写一个非常简单的编译器,使用它编写更复杂的编译器,使用第二个编译器构建第三个编译器,依此类推,直到您拥有功能齐全的编译器为止。
-
慕后森
鸡蛋早于鸡肉。大多数“鸡和蛋”问题的答案都是相同的:进化。某些人也难以相信生物进化,但不相信不是一个论点(谷歌argumentum ad ignorantiam)。为了直接回答您的问题:第一个编译器是用汇编语言(由人类编写的)的,一个称为汇编程序的程序会将汇编语言转换为二进制。这是比编译简单得多的过程,因为汇编语言只是机器语言的一种符号形式,它使用操作码名称而不是数字,用符号表示地址,等等。许多后续的编译器也都是用汇编语言编写的。但第一C编译器是一个修饰的B类的编译器,其写于乙。第一个B编译器是用TMG编写的。TMG编译器用来编译B编译器是用PDP-7汇编语言编写的。