gpt4 book ai didi

assembly - IR(中间表示)的目的是什么

转载 作者:行者123 更新时间:2023-12-02 19:04:52 25 4
gpt4 key购买 nike

源代码可以直接转换为机器代码(100000)。那为什么我们需要将其转换为IR(中间表示)汇编语言呢?

如果我不能直接转换成机器语言,有什么优点和缺点?

最佳答案

Then why do we need to convert it to IR (Intermediate Representation) assembly language?

你不知道。

IR 的文本表示形式是为了调试编译器内部而存在的。 (编译器通常会通过一些内部表示进行转换,通常是某种形式的 SSA ,同时将程序逻辑优化为高效的 asm,然后是机器代码。)请参阅 Disable all optimization options in GCC .

<小时/>

特别是对于 LLVM,IR 作为一种平台中立的类汇编语言非常有用,可用于 JIT 编译。您的可移植应用程序可以生成 LLVM-IR,并将其提供给 LLVM,以便为其运行的任何平台获取优化机器代码。

或者对于新语言的提前编译器,这意味着您不必为每个可能的平台编写直接从源代码到机器代码的优化编译器。因此,您可以获得多个目标的可移植性,最重要的是,您可以获得一个优化的后端,而只需编写一个发出简单的未优化的 LLVM-IR 的前端。

编写一个优化编译器很困难,但如果您希望任何人在实际工作中使用它,至少稍微优化的机器代码基本上是必要的。请参阅Why are there so few C compilers?

<小时/>

TL:DR; IR 使得一个优化后端可以用于不同语言的多个前端。

关于assembly - IR(中间表示)的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com