+/* `Deep Thought', a softcore CPU implemented on a FPGA
+
+ Copyright (C) 2010 Markus Hofstaetter <markus.manrow@gmx.at>
+ Copyright (C) 2010 Martin Perner <e0725782@student.tuwien.ac.at>
+ Copyright (C) 2010 Stefan Rebernig <stefan.rebernig@gmail.com>
+ Copyright (C) 2010 Manfred Schwarz <e0725898@student.tuwien.ac.at>
+ Copyright (C) 2010 Bernhard Urban <lewurm@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef __DISASM_H__
+#define __DISASM_H__
+
#include <iostream>
#include <string>
#include <map>
+#include "uint32_from_hex.hpp"
+
+class Iinstr;
+
#include "Iinstr.hpp"
using namespace std;
private:
std::map<short,Iinstr*> instrs;
- class uint32_from_hex // For use with boost::lexical_cast
- {
- typedef unsigned int uint32;
- uint32 value;
- public:
- operator uint32() const {
- return value;
- }
- friend std::istream& operator>>(std::istream& in, uint32_from_hex& outValue)
- {
- in >> std::hex >> outValue.value;
- return in;
- }
- };
-
protected:
void decodeCondition(short);
Iinstr* decodeOpcode(short);
public:
disasm(std::map<short,Iinstr*> map) : instrs(map) {};
- std::string decode(std::string);
+ Iinstr* decode(std::string);
+ Iinstr* decodeNum(CDat);
+ std::string decodeToString(std::string str);
};
+#endif