我正在为目标编写LLVM的自定义后端,并且没有指定任何子目标。我想打印程序集,我正在尝试实现MCInstPrinter :: ABCMCInstPrinter类。
我遇到的问题是纯虚函数
virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
const MCSubtargetInfo &STI) = 0;
采用MCSubtargetInfo类型的参数STI。我对LLVM很陌生,所以我想我只是不了解MC Layer类的完整结构,但是 MCSubtargetInfo参数意味着我需要定义一个ABCSubtarget才能够印刷组件?如果没有,那么MCSubtargetInfo类的用途是什么?
LLVM文档中的llvm::MCSubtargetInfo Class Reference page声明以下内容为MCSubtargetInfo的详细描述
所有目标子目标的通用基类。
这是另一个原因我认为这个类只对于具有子目标的目标是必需的,但是,尽管如此,这种类型的参数仍然是程序集打印中的纯虚函数。
我实际上是否需要 ABCSubtarget实现我的后端才能打印?
赞赏正确方向的任何提示。谢谢你的帮助。
答案 0 :(得分:2)
是的,您需要为后端定义至少一个子目标。如果您没有任何可以控制子目标选择的选项,那么它不应该太糟糕,但是这个类需要在那里才能工作。