我目前正在使用一种宠物编程语言(出于学习目的),并且在过去一年中进行了大量研究,我认为是时候开始对这种语言的概念进行建模了。首先,我希望它编译为某种中间形式,例如 JVM 或 .NET 字节码,目标是兼容多平台/架构。其次,我希望它快(我还有很多其他的想法,但不是本主题讨论的目的)。
我想到的最佳选择是:编译为 JVM 字节码并使用 OpenJDK 作为运行时环境,编译为 .NET 字节码并使用 Mono 作为运行时环境,编译为 LLVM IR 并使用 LLVM 作为运行时环境。
正如您可能想象的那样,我选择了 LLVM。为什么?因为它的速度很快。我使用 C++ N-Body 代码做了一个小基准测试,并在我的机器上用 lli jitted IR 实现了 7 秒,而使用 clang 本机编译代码则为 27 秒(我知道 clang 先生成 IR,然后再生成机器代码)。
所以,这是我的问题:是否有任何可再发行版本的 LLVM 基本工具集(我只需要 lli)我可以使用?还是我必须自己编译?如果是后者,你能给我一些关于如何做的提示吗?如果我真的必须这样做,我正在考虑从我的机器(Intel Mac)交叉编译它们,并生成一些安装程序(例如,用于 Windows 的 .msi、用于流行的 linux 发行版的 .rpm 和 .deb 以及用于麦克斯)。请记住,我只需要 LLVM 的一个最小子集,这样这个子集就可以通过使用“lli”来充当 VM。这里真正的问题是如何将 LLVM 用作典型的虚拟机。