之前在 LLVM每日谈之四十七 LLVM后端文档解析 中,介绍了后端文档中提到关于后端的六大模块、七大环节和七个步骤。前文也提到过,它们是从不同的维度去解析LLVM的后端,不同维度之间是存在各种各样的交叉关系的。在这里,简单对于三者的关系进行解析。
六大模块中第四个模块 Target-independent code generation algorithms(代码地址:lib/CodeGen) ,这个不依赖于具体平台的算法是用来实现生成native code的各个环节的,例如:寄存器分配、调度等。说的再直接一点,这个模块包含了我们前面提到了后端的七大环节。
在 The LLVM Target-Independent Code Generator 文档中,在target-independent-code-generation-algorithms 部分,上来第一句就是: This section documents the phases described in the high-level design of the code generator. It explains how they work and some of the rationale behind their design. 其中的“high-level design of the code generator”,就是我们前文指出的“七大环节”。也就是说,我们讲的“七大环节”对应了六大部分中的第四个部分。
而我们新建后端的七大步骤,既要保证针对该新建后端的六个部分完整,也要保证针对该新建后端的七大环节完整,这样才能保证新建后端的正常运行。
后续会对七大步骤对应六大部分和七大环节的具体关系进行解析。
LLVM后端的其他文章: