我正在寻找可以嵌入到我的程序中的JIT编译器或小编译器库。我缩进使用它来编译动态生成的代码,执行复数的算术。生成的代码结构非常简单:没有循环,没有条件,但它们可能很长(由GCC编译时几MB)。生成的机器代码的性能很重要,而我并不真正关心编译本身的速度。哪个JIT编译器最适合我的目的?谢谢!
详细要求
答案 0 :(得分:7)
您可能需要查看LLVM。
答案 1 :(得分:3)
Cint是一个c ++(ish)环境,它提供了混合编译代码和解释代码的能力。有一组optimization tools for the interpreter。 ROOT通过在运行时支持编译和链接(参见http://root.cern.ch/drupal/content/cint-prompt的最后一节)进一步扩展了这一点,尽管它似乎使用了系统编译器,因此可能没有帮助。所有代码都是开源的。
我经常使用所有这些功能作为我工作的一部分。
我不知道它是否积极使用SIMD指令,但它似乎满足您的所有其他要求。
正如我看到您正在使用动态库中的编译动态库,您可能会考虑TCC,但我不相信它做了太多优化并怀疑它不支持SIMD。
答案 2 :(得分:0)
听起来您希望能够动态编译然后动态加载已编译的库(.DLL或.so)。这将为您提供最佳性能,使用ANSI-C或C ++接口。所以,忘记JITing并考虑生成一个C / C ++编译器来进行编译。
这当然假设可以在实际生成动态生成的代码的位置安装编译器。