4

我正在制作一个应用程序,我想使用 ExecutionEngine 加载和执行 llvm 位代码。到目前为止,我已经设法使用通过 clang 编译的非常简单的 C 代码来做到这一点。

我的想法是,如果我在这个项目中使用 llvm,那么它可能比说的更与语言无关,特别是选择 lua/python/javascript。但是我很困惑这对于托管或脚本语言如何工作,因为它们通常与具有 GC 等资源的平台相关联。所以我不确定它如何通过 ExecutionEngine 实际工作。

因此,作为一个示例场景,假设用户想要编写一些在我的应用程序中运行的 python 代码。然后我希望他们向我提供代表该 python 代码的位码,然后我将使用 llvm 的 ExecutionEngine 在我的 C++ 应用程序中运行它。

这可能吗?python可以简单地编译成bitcode然后使用ExecutionEngine运行吗?如果不是,我需要知道什么才能理解为什么不呢?

4

1 回答 1

0

经过一些阅读和一些对话,我相信答案是 ExecutionEngine 本质上执行代码就好像它是本机 C 代码一样。这意味着如果您想在 llvm 上执行 lua/python/javascript 代码,您需要实际发送该运行时的位码。然后运行时可以像往常一样解析和执行脚本。

据我所知,这些运行时都没有能力将它们的脚本直接编译成 llvm 位码(还)。

于 2014-01-17T15:44:56.743 回答