MCInstPrinter.h revision 7e85180d15c4d5a451fbc078f7194a41c6230a57
1//===-- MCInstPrinter.h - Convert an MCInst to target assembly syntax -----===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLVM_MC_MCINSTPRINTER_H 11#define LLVM_MC_MCINSTPRINTER_H 12 13namespace llvm { 14class MCInst; 15class raw_ostream; 16class MCAsmInfo; 17class StringRef; 18 19/// MCInstPrinter - This is an instance of a target assembly language printer 20/// that converts an MCInst to valid target assembly syntax. 21class MCInstPrinter { 22protected: 23 /// O - The main stream to emit instruction text to. 24 raw_ostream &O; 25 26 /// CommentStream - a stream that comments can be emitted to if desired. 27 /// Each comment must end with a newline. This will be null if verbose 28 /// assembly emission is disable. 29 raw_ostream *CommentStream; 30 const MCAsmInfo &MAI; 31public: 32 MCInstPrinter(raw_ostream &o, const MCAsmInfo &mai) 33 : O(o), CommentStream(0), MAI(mai) {} 34 35 virtual ~MCInstPrinter(); 36 37 /// setCommentStream - Specify a stream to emit comments to. 38 void setCommentStream(raw_ostream &OS) { CommentStream = &OS; } 39 40 /// printInst - Print the specified MCInst to the current raw_ostream. 41 /// 42 virtual void printInst(const MCInst *MI) = 0; 43 44 /// getOpcodeName - Return the name of the specified opcode enum (e.g. 45 /// "MOV32ri") or empty if we can't resolve it. 46 virtual StringRef getOpcodeName(unsigned Opcode) const; 47}; 48 49} // namespace llvm 50 51#endif 52