LLVM提供了访问JIT编译函数getPointerToFunction
的地址的功能(参见例如http://llvm.org/docs/tutorial/LangImpl4.html#adding-a-jit-compiler)。
由于我更喜欢OCaml而非C ++用于codegen部分,因此我几乎局限于llvm的C接口(后者又是OCaml接口的基础)。
当我查看http://llvm.org/docs/tutorial/OCamlLangImpl4.html处的代码时,我所能看到的只是run_function
,它似乎每次调用时都会重新编译该函数。这导致代码慢了2000倍。
C接口是否可以使用getPointerToFunction
,或者我必须以某种方式破解我的方式?
如果它不可用,我的想法是生成第二个llvm函数,它产生指向编译的指针。有没有一种方便的方法,即通过指令获取llvm函数的地址?