mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-08 03:30:22 +00:00
8d7d2e1238
This new disassembler can correctly decode all the testcases that the old one did, though some "expected failure" testcases are XFAIL'd for now because it is not (yet) as strict in operand checking as the old one was. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137144 91177308-0d34-0410-b5e6-96231b3b80d8
85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
//===- ARMDisassembler.h - Disassembler for ARM/Thumb ISA -------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file is part of the ARM Disassembler.
|
|
// It contains the header for ARMDisassembler and ThumbDisassembler, both are
|
|
// subclasses of MCDisassembler.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef ARMDISASSEMBLER_H
|
|
#define ARMDISASSEMBLER_H
|
|
|
|
#include "llvm/MC/MCDisassembler.h"
|
|
#include <vector>
|
|
|
|
namespace llvm {
|
|
|
|
class MCInst;
|
|
class MemoryObject;
|
|
class raw_ostream;
|
|
|
|
struct EDInstInfo;
|
|
|
|
/// ARMDisassembler - ARM disassembler for all ARM platforms.
|
|
class ARMDisassembler : public MCDisassembler {
|
|
public:
|
|
/// Constructor - Initializes the disassembler.
|
|
///
|
|
ARMDisassembler() :
|
|
MCDisassembler() {
|
|
}
|
|
|
|
~ARMDisassembler() {
|
|
}
|
|
|
|
/// getInstruction - See MCDisassembler.
|
|
bool getInstruction(MCInst &instr,
|
|
uint64_t &size,
|
|
const MemoryObject ®ion,
|
|
uint64_t address,
|
|
raw_ostream &vStream) const;
|
|
|
|
/// getEDInfo - See MCDisassembler.
|
|
EDInstInfo *getEDInfo() const;
|
|
private:
|
|
};
|
|
|
|
/// ARMDisassembler - ARM disassembler for all ARM platforms.
|
|
class ThumbDisassembler : public MCDisassembler {
|
|
public:
|
|
/// Constructor - Initializes the disassembler.
|
|
///
|
|
ThumbDisassembler() :
|
|
MCDisassembler() {
|
|
}
|
|
|
|
~ThumbDisassembler() {
|
|
}
|
|
|
|
/// getInstruction - See MCDisassembler.
|
|
bool getInstruction(MCInst &instr,
|
|
uint64_t &size,
|
|
const MemoryObject ®ion,
|
|
uint64_t address,
|
|
raw_ostream &vStream) const;
|
|
|
|
/// getEDInfo - See MCDisassembler.
|
|
EDInstInfo *getEDInfo() const;
|
|
private:
|
|
mutable std::vector<unsigned> ITBlock;
|
|
void AddThumbPredicate(MCInst&) const;
|
|
void UpdateThumbVFPPredicate(MCInst&) const;
|
|
};
|
|
|
|
|
|
} // namespace llvm
|
|
|
|
#endif
|