0

我一直在阅读龙之书,我想知道单程编译器,如果我弄错了,请纠正我,但是当编译器进行分析时,它会生成越来越准确的中间表示,或者可能不是准确的无论如何,也许优化是一个更好的术语。单遍编译器每个阶段只经过一次,有时会将多个阶段组合成一个遍,那么这是否意味着中间表示将不太理想?我确定我对此的想法有问题,所以请随时纠正我所做的任何错误假设(或者让我知道这个问题有多愚蠢,无论哪种方式)。

此外,如果中间表示不受影响,那么如果多通道编译器会导致编译时间变慢,我们为什么还要使用它们呢?

4

1 回答 1

1

单遍编译器一次性直接生成最终结果。根本没有中间表示。而且因为这要么太复杂(难以实现、理解和维护),要么太天真(没有优化),我们有多通道编译器。

维基百科状态

由于可用信息的范围有限,单遍编译器无法生成与多遍编译器一样高效的程序。许多有效的编译器优化需要对基本块、循环(尤其是嵌套循环)、子例程或整个模块进行多次传递。有些需要通过整个程序。由于它们的设计,一些编程语言根本无法一次性编译。

于 2016-03-09T03:23:23.330 回答