JIT数学编译器

时间:2010-10-24 21:38:57

标签: jit

我正在寻找可以嵌入到我的程序中的JIT编译器或小编译器库。我缩进使用它来编译动态生成的代码,执行复数的算术。生成的代码结构非常简单:没有循环,没有条件,但它们可能很长(由GCC编译时几MB)。生成的机器代码的性能很重要,而我并不真正关心编译本身的速度。哪个JIT编译器最适合我的目的?谢谢!

详细要求

  • 支持双精度复数算法
  • 支持基本优化
  • 支持多个CPU(至少x86和x86-64)
  • 在支持的CPU上使用SSE
  • 支持堆栈或大量本地变量寄存器
  • ANSI-C或C ++接口
  • 跨平台(主要是Linux,Unix)

3 个答案:

答案 0 :(得分:7)

您可能需要查看LLVM

答案 1 :(得分:3)

Cint是一个c ++(ish)环境,它提供了混合编译代码和解释代码的能力。有一组optimization tools for the interpreterROOT通过在运行时支持编译和链接(参见http://root.cern.ch/drupal/content/cint-prompt的最后一节)进一步扩展了这一点,尽管它似乎使用了系统编译器,因此可能没有帮助。所有代码都是开源的。

我经常使用所有这些功能作为我工作的一部分。

我不知道它是否积极使用SIMD指令,但它似乎满足您的所有其他要求。


正如我看到您正在使用动态库中的编译动态库,您可能会考虑TCC,但我不相信它做了太多优化并怀疑它不支持SIMD。

答案 2 :(得分:0)

听起来您希望能够动态编译然后动态加载已编译的库(.DLL或.so)。这将为您提供最佳性能,使用ANSI-C或C ++接口。所以,忘记JITing并考虑生成一个C / C ++编译器来进行编译。

这当然假设可以在实际生成动态生成的代码的位置安装编译器。