我目前正在从事宠物编程语言(用于学习目的),并且在过去一年中经历了大量研究,我认为现在是时候开始建模这种语言的概念了.首先,我希望它能够编译成某种中间形式,例如JVM或.NET字节码,目标是兼容多平台/架构.其次,我希望它快速(我还有许多其他的东西,但这不是讨论这些主题的目的).
我想到的最佳选择是:编译为JVM字节码并使用OpenJDK作为运行时环境,编译为.NET字节码并使用Mono作为运行时环境,编译为LLVM IR并使用LLVM作为运行时环境.
正如您可能想象的那样,我选择了LLVM.为什么?因为它的速度非常快.我使用C++ N-Body代码进行了一些基准测试,并在我的机器中使用lli jitted IR实现了7s,而使用了clang本地编译代码的27s(我知道clang首先使IR成为机器代码).
所以,这是我的问题:我可以使用LLVM基本工具集(我只需要lli)的任何可再发行版本吗?或者我必须自己编译?如果是后者,你能否提供一些关于如何做的提示?如果我真的必须这样做,我想是从我的机器(英特尔Mac)交叉编译它们,并生成一些安装程序(例如,Windows的.msi,流行的Linux发行版的.rpm和.deb以及.pkg Mac电脑).请记住,我只需要LLVM的最小子集,这样通过使用"lli",该子集就能够像VM一样工作.这里真正的问题是如何将LLVM用作典型的虚拟机.
platform-agnostic multiplatform llvm llvm-ir vm-implementation