从*Mod包含一些IR 的LLVM模块开始:如何使用特定的后端从中生成特定于目标的汇编程序?不幸的是,Kaleidoscope教程没有详细说明.它只使用执行引擎来编译程序(在构建,目标体系结构上),但实际上并没有选择特定的后端来生成特定于目标的汇编程序.我认为,任何LLVM教程都没有,因为他们没有详细说明构建静态编译器.因此,这个问题可以提供这个缺失的信息.
由于我们要构建静态编译器,因此我们不希望使用命令行等工具llc来完成工作.我们想要使用LLVM API.
为了使这更具体,让我们从这段代码开始:
LLVMContext &Context = getGlobalContext();
SMDiagnostic Err;
Module *Mod = ParseIRFile(argv[1], Err, Context);
Run Code Online (Sandbox Code Playgroud)
文件名(由第一个参数给出)已成功解析为IR.现在让我们跳过优化过程并创建一些具有特定后端的汇编程序,例如PTX后端(从3.2版开始提供).