disasm: alpha version
[calu.git] / 3c_disasm / disasm.h
1 #include <iostream>
2 #include <string>
3 #include <map>
4
5 #include "Iinstr.hpp"
6
7 using namespace std;
8
9 class disasm {
10
11         private:
12                 std::map<short,Iinstr*> instrs;
13         class uint32_from_hex   // For use with boost::lexical_cast
14         {
15                 typedef unsigned int uint32;
16                 uint32 value;
17                 public:
18                         operator uint32() const {
19                                 return value;
20                         }
21                         friend std::istream& operator>>(std::istream& in, uint32_from_hex& outValue)
22                         {
23                                 in >> std::hex >> outValue.value;
24                                 return in;
25                         }
26         };
27
28         protected:
29                 void decodeCondition(short);
30                 Iinstr* decodeOpcode(short);
31
32         public:
33                 disasm(std::map<short,Iinstr*> map) : instrs(map) {};
34                 std::string decode(std::string);
35 };
36