【发布时间】:2011-03-31 08:50:04
【问题描述】:
我不明白 LLVM JIT 与正常的无 JIT 编译有何关系,而且文档也不好。
例如假设我使用clang 前端:
- 案例 1:我使用 clang/llvm 将 C 文件编译为本机。我理解的这个流程就像 gcc 流程 - 我得到了我的 x86 可执行文件并运行。
- 案例 2:我编译成某种在 LLVM JIT 上运行的 LLVM IR。在这种情况下,可执行文件包含 LLVM 运行时以在 JIT 上执行 IR,或者它是如何工作的?
这两者有什么区别,它们是否正确? LLVM 流是否包括对 JIT 和非 JIT 的支持?我什么时候想使用 JIT - 对于像 C 这样的语言来说这是否有意义?
【问题讨论】:
-
简单!它不关注二进制文件的性能,而是关注代码质量和编译速度,因此每个二进制文件都包含一个小存根来执行从 C/C++ 代码生成的字节码,就像 java 一样。