9a8eb704a3ee2c54790fa20a09ee6c9c28c0ab00
[calu.git] / 3c_disasm / disasm.h
1 /*   `Deep Thought', a softcore CPU implemented on a FPGA
2
3     Copyright (C) 2010 Markus Hofstaetter <markus.manrow@gmx.at>
4     Copyright (C) 2010 Martin Perner <e0725782@student.tuwien.ac.at>
5     Copyright (C) 2010 Stefan Rebernig <stefan.rebernig@gmail.com>
6     Copyright (C) 2010 Manfred Schwarz <e0725898@student.tuwien.ac.at>
7     Copyright (C) 2010 Bernhard Urban <lewurm@gmail.com>
8
9     This program is free software: you can redistribute it and/or modify
10     it under the terms of the GNU General Public License as published by
11     the Free Software Foundation, either version 3 of the License, or
12     (at your option) any later version.
13
14     This program is distributed in the hope that it will be useful,
15     but WITHOUT ANY WARRANTY; without even the implied warranty of
16     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17     GNU General Public License for more details.
18
19     You should have received a copy of the GNU General Public License
20     along with this program.  If not, see <http://www.gnu.org/licenses/>. */
21
22 #ifndef __DISASM_H__
23 #define __DISASM_H__
24
25 #include <iostream>
26 #include <string>
27 #include <map>
28
29 #include "uint32_from_hex.hpp"
30
31 class Iinstr;
32
33 #include "Iinstr.hpp"
34
35 using namespace std;
36
37 class disasm {
38
39         private:
40                 std::map<short,Iinstr*> instrs;
41         protected:
42                 void decodeCondition(short);
43                 Iinstr* decodeOpcode(short);
44
45         public:
46                 disasm(std::map<short,Iinstr*> map) : instrs(map) {};
47                 Iinstr* decode(std::string);
48                 Iinstr* decodeNum(CDat);
49                 std::string decodeToString(std::string str);
50 };
51
52 #endif