【问题标题】:LLVM | codegen for program entry function with command line optionsLLVM |带有命令行选项的程序入口函数的 codegen
【发布时间】:2020-02-07 02:19:07
【问题描述】:

对于我的编程语言来说,程序的入口就像C/C++ main函数:

int main(int argc, char **argv) {
    return 0
}

假设:

  • main 的 IR 代码使用 llvm::IRBuilder 生成到 llvm::Function
  • 我创建了 llvm::LLVMContextllvm::Module

问题:

如果我想将此代码编译成二进制prog,如何使用llvm生成将命令行参数传递给argcargv的部分,然后调用main,这是用户在使用时提供的正在运行prog

【问题讨论】:

  • 如果该函数 actually 被称为 main() 并且 actually 具有这些参数,那么它应该可以正常工作。如果不是,那么您需要生成一个实际上称为 main() 的桥接函数,并以您希望调用的方式调用您想要调用的函数。

标签: c++ compiler-construction llvm llvm-c++-api


【解决方案1】:

感谢arnt的评论:

如果该函数实际上被称为 main() 并且实际上具有这些参数,那么它应该可以正常工作。如果不是,那么您将需要生成一个实际上称为 main() 的桥接函数,并以您希望调用它的方式调用您想要调用的函数。 – 安特

有效!

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 2012-05-12
    • 2011-08-02
    • 2014-05-28
    • 1970-01-01
    • 2012-10-26
    • 2014-12-03
    • 2011-09-17
    • 2019-10-11
    相关资源
    最近更新 更多