【发布时间】:2013-01-25 08:55:00
【问题描述】:
我有一个C++文件,里面有一些函数,比如:int myMax(int a,int b),编译成一个llvm IR。现在想在另一个C++文件中操作IR,不知道如何调用我的C++文件中的函数(如:myMax)。
【问题讨论】:
标签: function llvm call llvm-ir
我有一个C++文件,里面有一些函数,比如:int myMax(int a,int b),编译成一个llvm IR。现在想在另一个C++文件中操作IR,不知道如何调用我的C++文件中的函数(如:myMax)。
【问题讨论】:
标签: function llvm call llvm-ir
您可以将 IR 编译为适合您平台的目标文件(使用 llc)。该目标文件与由 C++ 编译器生成的任何其他目标文件类似。所以你可以从你的 C++ 代码中调用它。
更具体地说。您将带有int myMax(int a, int b) 的文件编译成某个目标文件,例如mymax.o。您的“用户”C++ 代码需要:
myMax 的声明。mymax.o 以在最终可执行文件中实现。或者,您可以使用 LLVM 的现有 JIT 功能对 C++ 代码中的 IR 模块进行 JIT,然后使用 getPointerToFunction 访问它。
【讨论】: