为了实现一个新的LLVM目标后端,以下是一些建议的文档阅读顺序:
- LLVM Target-Independent Code Generator Guide:这是一个入门指南,介绍了LLVM代码生成框架的基本概念和数据结构。建议首先阅读这个文档,以了解LLVM目标后端的主要组件。文档链接:The LLVM Target-Independent Code Generator
- LLVM TableGen Language Reference Manual:TableGen是LLVM中用于描述目标体系结构的领域特定语言。在实现目标后端时,您需要使用TableGen定义指令集、寄存器和其他属性。文档链接:TableGen Overview 、TableGen Programmer’s Reference 、TableGen Backend Developer’s Guide、TableGen BackEnds、tblgen – Description to C++ Code
- LLVM Machine Code Emission Framework:这个文档介绍了如何使用LLVM的MC(Machine Code)层实现目标后端的代码生成。它涵盖了底层代码生成、汇编和目标文件格式的相关知识。文档链接:https://llvm.org/docs/MCJITDesignAndImplementation.html
- How to Write an LLVM Backend:这是一个实际的目标后端实现教程,介绍了如何为LLVM添加一个新的目标后端。虽然这个教程可能有些过时,但它仍然提供了实现目标后端的一个实际例子。文档链接:Writing an LLVM Backend
- LLVM源代码阅读:在阅读以上文档后,建议您深入阅读LLVM源代码。特别是
llvm/include/llvm/CodeGen
和llvm/lib/CodeGen
目录中的代码。这将帮助您更好地理解LLVM目标后端框架的API和数据结构。 - 参考现有的目标后端实现:为了更好地了解如何实现一个新的LLVM目标后端,建议您参考现有的目标后端实现。例如,您可以查看
llvm/lib/Target/X86
(针对x86架构)或llvm/lib/Target/ARM
(针对ARM架构)目录中的代码。这将帮助您了解如何将通用框架应用于特定的体系结构。
阅读文档时,请注意LLVM文档和源代码可能会随着版本更新而发生变化。始终确保您阅读的文档与您正在使用的LLVM版本相对应。