使用来自 Java 的 LLVM

Working with LLVM from Java

我完全知道这里已经提出了类似的问题:Generating LLVM Code from Java

事实是,那是在 2012 年...我查看了解决方案,发现提到的大部分项目都被放弃了,或者至少非常不活跃。 那么,作为最习惯使用 Java 的人,我使用 LLVM 的选项是什么(创建一种玩具语言,而不是使用 clang 或任何东西)?

为了最终回答这个问题,Java C++ 预设是一个有用且最新的选项:https://github.com/bytedeco/javacpp-presets/tree/master/llvm

我最近遇到了同样的问题,因为我在 Java/Scala 中使用 ANTLR 来定义我的词法分析器和解析器,并使用 LLVM 通过其 IR 生成实际的机器代码。 在尝试将基于 JVM 的前端绑定到 LLVM IR 和后端时,我实际上是在尝试使用 GraalVM https://www.graalvm.org/,因为它提供了一种无缝的方式来跨语言交互,包括 LLVM 位码,使用它的 Polyglot。

这里有一些参考资料:

您应该能够直接从您的 Java/Scala 代码访问 LLVM IR,反之亦然,您可以使用 Polyglot 调用从 LLVM/C++ 代码访问基于 JVM 语言的 AST。