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



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

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

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

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

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

据我所知,这些运行时还没有一个能够将脚本直接编译成llvm位代码。

最新更新