llvm可以从托管语言执行代码吗?

时间:2014-01-16 17:15:09

标签: python c++ llvm llvm-ir

我正在创建一个应用程序,我想使用ExecutionEngine加载并执行llvm bitcode。到目前为止,我已经设法通过clang编译了非常简单的C代码。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

据我所知,这些运行时都没有能力将其脚本直接编译到llvm bitcode中。(

相关问题