aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/Disassembler/ARMDisassembler.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/ARM/Disassembler/ARMDisassembler.h')
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassembler.h39
1 files changed, 12 insertions, 27 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassembler.h b/lib/Target/ARM/Disassembler/ARMDisassembler.h
index 0a74a3866e..1d7ab46352 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassembler.h
+++ b/lib/Target/ARM/Disassembler/ARMDisassembler.h
@@ -17,15 +17,16 @@
#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:
@@ -44,38 +45,19 @@ public:
const MemoryObject &region,
uint64_t address,
raw_ostream &vStream) const;
-
+
/// getEDInfo - See MCDisassembler.
EDInstInfo *getEDInfo() const;
private:
};
-// Forward declaration.
-class ARMBasicMCBuilder;
-
-/// Session - Keep track of the IT Block progression.
-class Session {
- friend class ARMBasicMCBuilder;
-public:
- Session() : ITCounter(0), ITState(0) {}
- ~Session() {}
- /// InitIT - Initializes ITCounter/ITState.
- bool InitIT(unsigned short bits7_0);
- /// UpdateIT - Updates ITCounter/ITState as IT Block progresses.
- void UpdateIT();
-
-private:
- unsigned ITCounter; // Possible values: 0, 1, 2, 3, 4.
- unsigned ITState; // A2.5.2 Consists of IT[7:5] and IT[4:0] initially.
-};
-
-/// ThumbDisassembler - Thumb disassembler for all ARM platforms.
+/// ARMDisassembler - ARM disassembler for all ARM platforms.
class ThumbDisassembler : public MCDisassembler {
public:
/// Constructor - Initializes the disassembler.
///
ThumbDisassembler() :
- MCDisassembler(), SO() {
+ MCDisassembler() {
}
~ThumbDisassembler() {
@@ -87,13 +69,16 @@ public:
const MemoryObject &region,
uint64_t address,
raw_ostream &vStream) const;
-
+
/// getEDInfo - See MCDisassembler.
EDInstInfo *getEDInfo() const;
private:
- Session SO;
+ mutable std::vector<unsigned> ITBlock;
+ void AddThumbPredicate(MCInst&) const;
+ void UpdateThumbVFPPredicate(MCInst&) const;
};
+
} // namespace llvm
-
+
#endif