什么是编译器自举?


这是一种制作自编译编译器的方法,它是由它要编译的源程序语言编写的编译器。自举编译器可以编译编译器,因此您可以使用此编译后的编译器来编译其他所有内容以及其未来的版本。

自举的用途

自举有各种用途,如下所示:

  • 它可以允许从实际的编译器开始开发新的编程语言和编译器。

  • 它允许将新功能与编程语言及其编译器结合起来。

  • 它还允许向编译器添加新的优化。

  • 它允许在具有不同指令集的处理器之间传输语言和编译器

自举的优点

自举有各种优点,如下所示:

  • 编译器开发可以在被编译的高级语言中进行。

  • 它是对被编译语言的非平凡测试。

  • 这是一个包容性的一致性检查,因为它必须能够重新创建其目标代码。

对于自举,编译器由三种语言定义:

S→它编译的源语言。

T→它生成的目標語言。

I→用它编写的实现语言

这些语言可以用 T 图表示为

交叉编译器

编译器以其源语言、目标语言和编写它的语言为特征。这些语言可能大相径庭。编译器可以在一台机器上运行,并为另一台机器生成目标代码。这样的编译器被称为交叉编译器。

  • 如果它可以用执行语言 'S' 为机器 'N' 生成程序,为新语言 'L' 编写一个交叉编译器。

即 LsN

  • 如果当前的 S 编译器在机器 M 上运行并为 M 生成程序,则它由 SMM 定义。

  • 如果 LSN 通过 SMM 运行,我们将得到一个编译器 LMN,即从 L 到 N 的在 M 上运行的编译器。

示例 - 当 SsM 在 SAA 上运行时,使用自举创建交叉编译器。

解决方案 - 首先,它用 T 图表示两个编译器。

当 SsM 在 SAA 上运行时,将生成 SAM。

更新于:2021年10月23日

9K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始
广告