我目前正在使用 llvm 进行编译器项目。我遵循了各种教程,直到我有一个解析器来创建语法树,然后使用提供的 IRBuilder 将树转换为 llvm 模块。
我的目标是创建一个可执行文件,但我对下一步该做什么感到困惑。我找到的所有教程都只是创建 llvm 模块并使用 Module.dump() 打印出程序集。此外,我能找到的唯一文档是针对 llvm 开发人员的,而不是针对项目的最终用户的。
如果我想生成机器码,接下来的步骤是什么?llvm-mc 项目看起来可以做我想做的事,但我找不到任何类型的文档。
也许我期待 llvm 做一些它没有做的事情。我的期望是我可以构建一个模块,然后会有一个我可以用模块调用的 API,一个目标三元组和一个目标文件将被生成。我找到了有关生成 JIT 的文档和示例,但我对此不感兴趣。我正在寻找如何生成已编译的二进制文件。
我正在开发 OS X,如果这有任何影响的话。