我听说过鸡和蛋以及自举。我有几个问题。
是什么编写了第一个将某些东西转换为二进制指令的编译器?
汇编是编译还是翻译成二进制指令?
…我很难相信他们用二进制编写了编译器。
汇编指令(通常)是到操作码的直接映射,操作码是可以由处理器直接解释的机器码的(多)字节值。很有可能直接用操作码编写程序,方法是从一个表中查找它们(例如这个用于 6039 微处理器的表),其中列出了它们以及匹配的汇编指令,并手动确定内存地址/偏移量像跳跃一样。
第一个程序正是以这种方式完成的——手写操作码。
但是,大多数情况下,使用汇编程序“编译”汇编代码会更简单,它会自动执行这些操作码查找,并且有助于计算命名跳转标签的地址/偏移量等。
第一个汇编程序是手工编写的。然后这些汇编器可用于汇编更复杂的汇编器,然后可用于汇编为高级语言编写的编译器,依此类推。这种迭代编写工具以简化创建下一组工具的过程称为(正如 David Rabinowitz 在他的回答中所提到的)引导程序。