我正在为目标编写 LLVM 的自定义后端,但没有指定任何子目标。我想打印程序集并尝试实现 MCInstPrinter::ABCMCInstPrinter 类。
我遇到的问题是纯虚函数
virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
const MCSubtargetInfo &STI) = 0;
接受类型为 MCSubtargetInfo 的参数 STI。我对 LLVM 很陌生,所以我想我只是不了解 MC 层类的完整结构,但是MCSubtargetInfo 参数是否暗示我需要定义一个 ABCSubtarget 才能打印程序集?如果不是,那么 MCSubtargetInfo 类的用途是什么?
LLVM 文档中的llvm::MCSubtargetInfo 类参考页面将以下内容作为 MCSubtargetInfo 的详细描述
所有目标子目标的通用基类。
这是我认为此类仅对具有子目标的目标所必需的另一个原因,但是,尽管如此,在汇编打印中对于纯虚函数仍有这种类型的参数。
我真的需要一个 ABCSubtarget 实现来打印我的后端吗?
任何正确方向的提示都值得赞赏。谢谢您的帮助。