【问题标题】:Single Pass Compiler Intermediate Representation?单通道编译器中间表示?
【发布时间】:2016-06-23 06:33:48
【问题描述】:

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

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

【问题讨论】:

    标签: compiler-construction intermediate-language


    【解决方案1】:

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

    维基百科状态

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

    【讨论】:

    • 好的,有道理,我想知道为什么书中没有提到...也许是后来了,我还没有读,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多