新建后端的七大步骤,在前文《LLVM后端文档解析》中进行过介绍。我们在《创建一个LLVM新后端的第一步中文档与代码的差异》和《Target Registration的更正》中,已经列出了现有文档中第一步“Create a subclass of the TargetMachine class that describes characteristics of your target machine”和实际代码中的差别。当然,现有文档使用的是Sparc后端作为示例,而我分析代码时候采用的是RISCV的后端代码。两者对比起来稍微有点别扭,但是不影响对比效果。我计划在后端文档分析和对比系列写完之后,能写一个中文版本的以RISCV为实例的《Writing An LLVM Backend》文档,方便有需要熟悉后端的同学阅读。之所以选择RISCV,也是因为最近风投正盛,而且我个人对其发展持乐观态度;同时,也可以和原有文档的Sparc示例形成差异。
新建后端第二步的文档,主要内容是:Describe the register set of the target.官方文档的介绍基本上没有什么问题,但是文档有些内容没有跟上代码的更新。在此做简单的总结:
1、主要就是在llvm/lib/Target/Sparc/为目标平台建立SparcRegisterInfo.td、SparcRegisterInfo.h和SparcRegisterInfo.cpp。
2、在SparcRegisterInfo.td中要为Register<n>建立子类:
class SparcReg<bits<