Optimization 编译器中间阶段代码优化的目的是什么?
对中间代码执行一些代码优化,因为Optimization 编译器中间阶段代码优化的目的是什么?,optimization,compiler-construction,compiler-optimization,intermediate-code,Optimization,Compiler Construction,Compiler Optimization,Intermediate Code,对中间代码执行一些代码优化,因为 它们增强了编译器到目标处理器的可移植性 程序分析在中间代码上比在机器代码上更精确 数据流分析中的信息不能用于优化 前端的信息不能用于优化 IMO:中间代码是与机器无关的代码。所以,中间代码可以用于代码优化,因为给定的源代码可以转换为目标机器代码。因此,选项(1)和选项(2)也是正确的 在编译器的中间阶段,代码优化的目的和好处是什么?编译器优化可移植性并不是对中间代码执行许多优化的原因。然而,这是一个优势,我们得到免费的结果。你所说的其他三点是含糊不清的。无论
IMO:中间代码是与机器无关的代码。所以,中间代码可以用于代码优化,因为给定的源代码可以转换为目标机器代码。因此,选项(1)和选项(2)也是正确的
在编译器的中间阶段,代码优化的目的和好处是什么?编译器优化可移植性并不是对中间代码执行许多优化的原因。然而,这是一个优势,我们得到免费的结果。你所说的其他三点是含糊不清的。无论如何,我们不必讨论它们 为了回答您的问题,我必须经历一个典型编译器的操作(这个问题只适用于这种类型的编译器)。在编译过程中,编译器通常处理源代码的五种表示形式:
我想就便携性说几句话。IL使我们能够对多种源语言使用相同的后端。然而,即使我们确信只有一种语言会得到支持,正如我刚才解释的,IL仍然非常重要。此外,很少有非常重要的优化依赖于目标ISA。有许多优化可以将代码从IR转换为IR。这些显然是独立于目标的。这些优化确实是可移植的,可以在不同目标体系结构的后端之间共享。您可以查看更多信息。LLVM是优化编译器的一个很好的例子,它(在某种意义上)只在中间阶段运行。其思想是,通过以特定方式(如静态单赋值)转换代码表示,可以更可靠、更系统地确定是否允许进行优化。另请参见:因为许多优化可以在那里以独立于处理器的方式执行。