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