Llvm C ++ API将指向函数的指针传递给另一个函数

时间:2014-02-24 23:47:38

标签: c++ llvm

如何将指向函数的指针传递给另一个函数?我有这样的功能:

std::string PRINT_STATE_NAME(pPrintState func);

其中pPrintState是这样的typedef:

typedef void (*pPrintState)(std::string* buffer);

所以我JITed pPrintState并使其llvm :: FunctionType可用。

接下来我想从llvm C ++ API调用上面定义的PRINT_STATE_NAME()。不幸的是,我无法弄清楚要传递给调用指令的参数。 Atm我用内部类型转换的pPrintState创建了一个llvm :: GlobalVariable。但是我应该作为初始化程序传递什么?或者我完全走错了轨道?任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

您需要获取pPrintState的地址(JIT的地址,通过getPointerToFunction()或getPointerToNamedFunction())将此地址(作为整数)强制转换为pPrintState并作为参数传递。