【发布时间】:2012-09-03 17:34:56
【问题描述】:
我想使用来自 Java 的 LLVM 代码生成框架。
也就是说,我确实不想将 Java 代码编译成 LLVM。我只是想要一个可以从 Java 调用的用于代码生成的 LLVM 库。通常的 LLVM 库是 C,所以我不能使用它。
是否有任何 Java 端口?如果不是,那么最简单的方法是什么?将 API 封装到 JNI 中?
【问题讨论】:
-
重新实现整个 LLVM 代码库(或至少是其中的一个大子集)的移植将是极大的浪费。只需像其他人一样调用 C API。
-
但我正在开发的程序是 Java,我不允许更改它。我从来没有写过关于重新实现所有这些的文章。这不是我的意图,我在这里要求更简单的方法。
-
我不是这个意思。例如,人们从 O'Caml 和 Python 调用 LLVM。从 Java 调用 C 代码有多难?
-
那么,你的答案是在 JNI 中编写一个包装器?
-
我不了解 Java 生态系统,因此我没有资格推荐任何特定的选项(或答案,就此而言)。但是,是的,以某种方式包装它。这是一个明智的选择。我知道的另一个明智的选择是生成恰好是有效 IR 汇编代码的文本并在其上调用命令行工具。但是因为很难做好,而且格式经常变化,所以气馁。
标签: java code-generation llvm