我正在研究类似 JIT 的东西。我有以下代码:
Obj doSomething(Obj o, Selector sel){
...
}
我有一个指向这个函数的指针,我的问题是如何将指针包装成 aLLVM:Value
以便我可以使用 将它插入到我的 IR 中,IRBuilder.CreateCall
我需要做什么?
我正在研究类似 JIT 的东西。我有以下代码:
Obj doSomething(Obj o, Selector sel){
...
}
我有一个指向这个函数的指针,我的问题是如何将指针包装成 aLLVM:Value
以便我可以使用 将它插入到我的 IR 中,IRBuilder.CreateCall
我需要做什么?
(我将您的问题理解为:我有一个指向 LLVM 函数的 C++ 指针,我需要创建对它的调用,如果我弄错了,请在帖子或下面的评论中澄清)
llvm::Value
当您执行类似的操作时,大多数 LLVM 类都派生自
llvm::Function *theFunction = llvm::Function::Create(...);
llvm::Function是的子类,llvm::Value
您可以在CreateCall
Value *result = Builder.CreateCall(theFunction, ...); // This is the call instruction