1
27
通常,编译器的第一个版本是用不同的语言编写的,然后每个后续版本都用该语言编写,并用旧版本进行编译。一旦你编译了版本
|
2
13
它是。您通常需要从另一种语言编译或解释该语言的引导版本。 几年前,我读过一本帕斯卡编译器的历史,它是作为一个研究生项目写的。它用Pascal编写,并用系统内置的Pascal编译器编译。最终,它足以取代系统内置的Pascal编译器。不幸的是,他们在代码生成中发现了一个bug,但是代码生成器的修复在编译器中触发了这个bug,生成了一个坏的编译器。要修复它,需要从已安装的编译器手动修补二进制文件,然后将修补程序应用到源代码以替换自身。 |
3
6
对于第一个版本来说,这只是个问题。一旦我让1.0版的编译器运行起来,我就可以用我的语言编写2.0版,并使用1.0版的编译器来编译它。然后我可以编写v3.0并使用v2.0来编译它,使用v3.0来编译v4.0等等。 |
4
1
编译器的第一遍通常是用其他语言编写的,直到语言的格式足够好,能够编译它自己的编译器为止,然后就可以进入到x中了,它是用x编写的。 |
5
1
一开始,这种语言真正的第一个编译器,当然不是用那种语言写的。第二个可以用那种语言写。此外,给定一种语言的规范,您可以在引导编译器中实现一个基本核心,然后使用“引导”编译器理解的子集用该语言编写完全兼容的编译器。第二代编译器也可以忘记“引导”编译器。 |
6
1
在某种程度上,您需要一个用不同语言编写的编译器(或解释器)。但它不需要高效,可以用一种使解析和原型化变得容易的语言来完成(Lisp很流行)。一旦您使用它来编译“自编译器”,就可以放弃它并使用结果。 |
George S. · 是否存在基于元组的控制流语句内部表示? 6 年前 |
FlatAssembler · 在x86程序集中计算exp(x) 6 年前 |
cib · 即时编译和动态编译有什么区别? 6 年前 |
Artemis · 寄存器与指令之间的差异 6 年前 |
Sam · 了解go工具编译和链接命令 6 年前 |