【发布时间】:2013-05-09 13:56:11
【问题描述】:
从包含一些 IR 的 LLVM 模块 *Mod 开始:如何使用特定的后端从中生成特定于目标的汇编程序?不幸的是,万花筒教程没有详细说明这一点。它仅使用执行引擎对程序进行 JIT 编译(在构建、目标架构上),但实际上并没有选择特定的后端来生成特定于目标的汇编程序。我认为,任何 LLVM 教程也没有,因为它们没有详细说明构建静态编译器。因此,这个问题可以提供这个缺失的信息。
由于我们要构建一个静态编译器,我们不想使用llc等命令行工具来完成这项工作。我们想使用 LLVM API。
为了更具体,让我们从这段代码开始:
LLVMContext &Context = getGlobalContext();
SMDiagnostic Err;
Module *Mod = ParseIRFile(argv[1], Err, Context);
文件名(由第一个参数给出)已成功解析为 IR。现在让我们跳过优化过程并创建一些具有特定后端的汇编程序,例如PTX 后端(从 3.2 版开始可用)。
【问题讨论】: