1 //===-- llvm/MC/MCDisassembler.h - Disassembler interface -------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
9 #ifndef MCDISASSEMBLER_H
10 #define MCDISASSEMBLER_H
12 #include "llvm/System/DataTypes.h"
20 /// MCDisassembler - Superclass for all disassemblers. Consumes a memory region
21 /// and provides an array of assembly instructions.
22 class MCDisassembler {
24 /// Constructor - Performs initial setup for the disassembler.
27 virtual ~MCDisassembler();
29 /// getInstruction - Returns the disassembly of a single instruction.
31 /// @param instr - An MCInst to populate with the contents of the
33 /// @param size - A value to populate with the size of the instruction, or
34 /// the number of bytes consumed while attempting to decode
35 /// an invalid instruction.
36 /// @param region - The memory object to use as a source for machine code.
37 /// @param address - The address, in the memory space of region, of the first
38 /// byte of the instruction.
39 /// @param vStream - The stream to print warnings and diagnostic messages on.
40 /// @return - True if the instruction is valid; false otherwise.
41 virtual bool getInstruction(MCInst& instr,
43 const MemoryObject ®ion,
45 raw_ostream &vStream) const = 0;