繁体   English   中英

如何从C ++程序调用LLVM代码并将数据传递给它

[英]How to invoke LLVM code from a c++ program and pass data to it

我有一个c ++程序,可以在运行时生成LLVM IR。 现在,我想从我的c ++程序将此IR编译为二进制文件并调用该二进制文件。 同样在调用之前,我想将数据从我的c ++程序传递到生成的二进制文件。 我是LLVM的新手,我找不到与此相关的任何文档。 有人可以指向有关此问题的文档,也可以让我知道如何完成。

即使您没有说明要如何调用发出的代码,也可以想到以下一般的阻止和解决步骤,因此我认为这就像您正在调用另一个可执行文件一样:

在可执行文件中

  1. 生成LLVM IR(请参见下文)
  2. 使用诸如system ,clang之类的函数调用,该函数将从LLVM IR中生成新的可执行程序。
  3. 如果编译成功,则使用诸如system类的函数,调用新生成的可执行文件并将数据作为命令行参数传递。

生成LLVM IR

  1. 在生成的IR中,您需要发出一个main函数定义,该函数定义使用argc and argv因为这将消耗正在发送的已传递数据。
  2. main身体,你将需要妥善处理在命令行中输入并调用你原本想行使的代码。

但是:这有一些变化。 例如,如果要生成动态库,则可以省略main函数的生成,而是对刚创建的动态库进行运行时加载并解析函数入口点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM