使用LLVM API生成静态代码

rit*_*ter 5 c++ llvm

*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版开始提供).

Eli*_*sky 8

只需查看源代码即可tools/llc/llc.cpp.它做到了这一切,它很短,不难理解.如果您对某些事情有具体问题,那么您无法理解,请随时提出.