1 //===- ARMDisassembler.h - Disassembler for ARM/Thumb ISA -------*- 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 //===----------------------------------------------------------------------===//
10 // This file is part of the ARM Disassembler.
11 // It contains the header for ARMDisassembler and ThumbDisassembler, both are
12 // subclasses of MCDisassembler.
14 //===----------------------------------------------------------------------===//
16 #ifndef ARMDISASSEMBLER_H
17 #define ARMDISASSEMBLER_H
19 #include "llvm/MC/MCDisassembler.h"
30 /// ARMDisassembler - ARM disassembler for all ARM platforms.
31 class ARMDisassembler : public MCDisassembler {
33 /// Constructor - Initializes the disassembler.
42 /// getInstruction - See MCDisassembler.
43 bool getInstruction(MCInst &instr,
45 const MemoryObject ®ion,
47 raw_ostream &vStream) const;
49 /// getEDInfo - See MCDisassembler.
50 EDInstInfo *getEDInfo() const;
54 /// ARMDisassembler - ARM disassembler for all ARM platforms.
55 class ThumbDisassembler : public MCDisassembler {
57 /// Constructor - Initializes the disassembler.
63 ~ThumbDisassembler() {
66 /// getInstruction - See MCDisassembler.
67 bool getInstruction(MCInst &instr,
69 const MemoryObject ®ion,
71 raw_ostream &vStream) const;
73 /// getEDInfo - See MCDisassembler.
74 EDInstInfo *getEDInfo() const;
76 mutable std::vector<unsigned> ITBlock;
77 void AddThumbPredicate(MCInst&) const;
78 void UpdateThumbVFPPredicate(MCInst&) const;