我目前正在使用一种宠物编程语言(用于学习目的),并经过了过去一年的大量研究,我认为现在是时候开始对这种语言的概念进行建模了。首先,我希望它能够编译成某些中间形式,例如JVM或.NET bytecode,目标是多平台/架构兼容性。其次,我希望它运行速度快(我还有许多其他想法,但本主题不讨论这些)。
我想到的最佳选择是: 编译成JVM bytecode,并使用OpenJDK作为运行时环境, 编译成.NET bytecode,并使用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以及Mac的.pkg)。请记住,我只需要LLVM的最小子集,使得该子集能够像使用“lli”一样充当虚拟机。真正的问题在于如何将LLVM用作典型的虚拟机。