编译为机器代码的编译器是否需要在汇编中编写?

imk*_*dal 1 compiler-construction programming-languages machine-code low-level

排除将一种高级语言转换为另一种语言的编译器,编译为机器代码的编译器是否需要用汇编编写?

Jos*_*osh 5

编译器的源代码不需要在汇编中编写.例如,CPython编译器的(很好的部分)(好的,技术上的解释器)是用C编写的:http: //en.wikipedia.org/wiki/Cpython

在最开始,在有编译器之前,第一个编译器确实必须用汇编语言编写.但后来有人用这个编译器来编译自己的编译器.然后其他人使用这个编译器编译自己的编译器.等等等等.

这带来了"自举"的概念.引导编译器是用它打算编译的语言编写的编译器.clang编译器可以编译C++代码,但编译器本身是用C++编写的!这是如何运作的?那么第一个clang编译器是由不同的编译器编译的(可能是g ++).在clang编译器足够成熟之后,它能够编译自己的代码.现在,对clang编译器所做的任何更改都可以由clang编译器重新编译成另一个clang编译器!整洁,对吧?