1 //===- llvm/MC/MCCodeEmitter.h - Instruction Encoding -----------*- C++ -*-===// 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_MCCODEEMITTER_H 11 #define LLVM_MC_MCCODEEMITTER_H 12 13 namespace llvm { 14 15 class MCFixup; 16 class MCInst; 17 class MCSubtargetInfo; 18 class raw_ostream; 19 template<typename T> class SmallVectorImpl; 20 21 /// MCCodeEmitter - Generic instruction encoding interface. 22 class MCCodeEmitter { 23 protected: // Can only create subclasses. 24 MCCodeEmitter(); 25 26 public: 27 MCCodeEmitter(const MCCodeEmitter &) = delete; 28 MCCodeEmitter &operator=(const MCCodeEmitter &) = delete; 29 virtual ~MCCodeEmitter(); 30 31 /// Lifetime management reset()32 virtual void reset() {} 33 34 /// EncodeInstruction - Encode the given \p Inst to bytes on the output 35 /// stream \p OS. 36 virtual void encodeInstruction(const MCInst &Inst, raw_ostream &OS, 37 SmallVectorImpl<MCFixup> &Fixups, 38 const MCSubtargetInfo &STI) const = 0; 39 }; 40 41 } // end namespace llvm 42 43 #endif // LLVM_MC_MCCODEEMITTER_H 44