我一直在阅读龙书,我对单通道编译器感到疑惑,所以如果我弄错了就纠正我,但是当编译器通过分析它会产生一个越来越准确的中间表示,或者可能是准确的无论如何,这个词可能是一个更好的术语。单通道编译器只经过一次每个阶段,有时会将多个阶段组合成一个单一的阶段,这是否意味着中间表示不太理想?我确信我在思考这个问题上有什么不妥,所以请随时纠正我所做的任何错误的假设(或者只是告诉我这个问题是多么愚蠢)。
另外,如果中间表示没有受到影响,那么为什么我们想要使用多遍编译器,如果它们导致编译时间变慢?
答案 0 :(得分:1)
single pass compiler直接一次性产生最终结果。根本没有中间代表。而且因为它太复杂(实现,理解和维护)或太天真(没有优化),我们有多遍编译器。
维基百科声明
由于可用信息的范围有限,单程编译器无法生成与多程编译器一样有效的程序。许多有效的编译器优化需要在基本块,循环(尤其是嵌套循环),子例程或整个模块上进行多次传递。有些需要通过整个程序。由于它们的设计,一些编程语言根本无法一次编译。