是否可以在没有MCSubtargetInfo的情况下实现<target> MCInstPrinter类?

时间:2016-09-01 12:58:33

标签: compiler-construction llvm backend custom-backend

我正在为目标编写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实现我的后端才能打印?

赞赏正确方向的任何提示。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

是的,您需要为后端定义至少一个子目标。如果您没有任何可以控制子目标选择的选项,那么它不应该太糟糕,但是这个类需要在那里才能工作。