3

我对 LLVM 的实际作用感到困惑……我是否可以假设它可以用于在 C++ 程序中在运行时解析数学表达式?

现在在运行时,我正在获取数学表达式并从中构建一个 C 程序,通过对 gcc 进行系统调用来动态编译它。然后我动态加载由 gcc 生成的 .so 并提取我的 eval 函数......

我想用更简单甚至更快的方法替换这个工作流程...... LLVM 可以帮我吗?有什么资源可以让我开始吗?

4

1 回答 1

2

您正在描述使用 LLVM 作为 JIT 编译器,这绝对是可能的。如果您生成 LLVM IR 代码(在内存中)并将其交给库,它将为您生成机器代码(仍在内存中)。然后,您可以随心所欲地运行该代码。

如果要从 C 代码生成 LLVM IR,也可以链接clang为库。

是我在此答案中找到的 PDF ,其中包含一些有关如何将 LLVM 用作 JIT 的示例。

于 2013-01-31T21:20:24.697 回答