有一种特殊的编译技术被称为自举(bootstrap),其原理很简单,实现稍复杂。
自举之前需要借助低级语言或者其它语言“助举”,以 C语言编译器为例,它需要借助于汇编语言 ASM。
自举步骤(C语言):
- 设计语言与测试用例
- ASM 实现(助举)得到编译器 A,并通过测试
- 用 C语言编写编译器 X(源码),使用 A 编译得到 B,并通过测试
- 之后迭代 X,并使用 B 编译得到新的 B,实现 C语言自举
自举的作用:
- 证明语言的表达能力,验证语言设计的合理性
- 不依赖其它语言,方便语言迭代和进化
Java 虚拟机是使用 C++ 实现,但 Java 编译器是 Java 自举实现。