我不理解LLVM JIT如何与常规的非JIT编译相关联,而且文档也不太好。
例如,假设我使用clang
前端:
- 情况1:使用clang/llvm将C文件编译为本机代码。我理解这个流程类似于gcc流程-我得到我的x86可执行文件并运行它。
- 情况2:编译为某种在LLVM JIT上运行的LLVM IR。在这种情况下,可执行文件包含了LLVM运行时以在JIT上执行IR,或者它是如何工作的?
这两种方式有什么区别,它们是否正确? LLVM流程是否同时支持JIT和非JIT?我何时需要使用JIT-对于像C这样的语言,是否有意义使用JIT?