<分区>
我将开始为一种小型语言编写一个 JIT/解释器,并希望使用当今可用的一些免费 JIT 工具/库。我有哪些选择(我只知道 libjit、LLVM 和 GNU lightning),哪个更容易使用(但不会太慢)?
要求是:
- 编译时间不重要
- 执行时间很重要,但只要使用 JIT 编译器不太难
- 易用性很重要
- 无需垃圾回收。
- 实际上,不需要运行时环境(我真的只想要 JIT:编译到内存区域,然后获取指针并开始执行生成的代码)
- 开发将使用普通标准 C(无 C++,无平台特定功能)和 pthreads 完成。
具有良好执行时间的普通标准 C?你一定在找LuaJIT (实际上是后端的 dynasm,但它仍然是 LuaJIT 的一部分),它是一个跟踪 JIT 编译器(其中提到的大多数都是静态的)。它确实有垃圾收集功能,但可以很容易地取出或修改(很快就会有计划的大修),并且它有一个本地 FFI,所以它可以很容易地进行外部绑定(bind)(从 C 级别,所以你不需要不必总是深入细节)。
最好的部分是它的完全公共(public)域代码,并且代码是文档(结构良好,很好)。