编译器自举

有一种特殊的编译技术被称为自举(bootstrap),其原理很简单,实现稍复杂。

自举之前需要借助低级语言或者其它语言“助举”,以 C语言编译器为例,它需要借助于汇编语言 ASM。

自举步骤(C语言):

  1. 设计语言与测试用例
  2. ASM 实现(助举)得到编译器 A,并通过测试
  3. 用 C语言编写编译器 X(源码),使用 A 编译得到 B,并通过测试
  4. 之后迭代 X,并使用 B 编译得到新的 B,实现 C语言自举

自举的作用:

  1. 证明语言的表达能力,验证语言设计的合理性
  2. 不依赖其它语言,方便语言迭代和进化

Java 虚拟机是使用 C++ 实现,但 Java 编译器是 Java 自举实现。

Built with Hugo
Theme Stack designed by Jimmy