gpt4 book ai didi

llvm - 基于 LLVM 的编译的好处和管道

转载 作者:行者123 更新时间:2023-12-01 15:26:16 27 4
gpt4 key购买 nike

我看到越来越多的人正在转向 LLVM,尤其是具有 C 或 C++ 背景的人,因此存在一种模式,即什么样的人正在接近这个编译器,让我感到惊讶的是高度异构的技术集LLVM 可以管理,但我不知道该虚拟机遵循的管道是什么以及由此产生的好处是什么。

我想强调一个事实,我关注的是 LLVM,而不是 clang。

百万分之一的例子是 this one ( Youtube Video ) ,管道对我来说不是很明显,或者this other one ,但显然有很多完全不同的解决方案,例如,LLVM 与 JIT 解决方案结合使用。

简而言之,我看到了不同的语法和语义,人们使用 LLVM 来生成 GPU 着色器或二进制对象,但我看不到共同点。

“基于 LLVM 的编译”是什么意思,将 LLVM 视为黑盒,中间的输入、输出和业务逻辑是什么样的?

最佳答案

I can't see the common denominator.

共同点是将一种语言的代码转换为另一种语言的代码。而这正是编译器所做的。所以如果你想把一段“源语言”的代码转换成“目标语言”的代码,你需要做的是:

  1. 编写一个“前端”——一个将您的源语言转换为 LLVM 期望的输入的组件。该语言是一种特定于 LLVM 的语言,称为“LLVM Bitcode”或“LLVM IR”。
    • 或者,重用现有的前端 - 例如 Clang。
  2. 编写一个“后端”——一个将 LLVM 发出的内容转换为您的目标语言的组件。
    • 或者使用现有的后端,例如 LLVM 的 x86 后端。

就是这样。现在您可以享受 LLVM 对其输入和输出之间的代码执行的优化、将代码“降低”为更接近机器代码的通用框架等。

GCC 的行为是一样的,顺便说一下,只是 LLVM 被许多人认为在某些方面更优越,特别是许可和易于修改。

关于llvm - 基于 LLVM 的编译的好处和管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740323/

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