X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=3c_disasm%2Fdisasm.h;h=9a8eb704a3ee2c54790fa20a09ee6c9c28c0ab00;hb=HEAD;hp=908a3ee3936d00a42357f3ba6ab17079410cf10d;hpb=b5f15e1e75a5027fc4eb3d27b0542cb3324ed3a9;p=calu.git diff --git a/3c_disasm/disasm.h b/3c_disasm/disasm.h index 908a3ee..9a8eb70 100644 --- a/3c_disasm/disasm.h +++ b/3c_disasm/disasm.h @@ -1,7 +1,35 @@ +/* `Deep Thought', a softcore CPU implemented on a FPGA + + Copyright (C) 2010 Markus Hofstaetter + Copyright (C) 2010 Martin Perner + Copyright (C) 2010 Stefan Rebernig + Copyright (C) 2010 Manfred Schwarz + Copyright (C) 2010 Bernhard Urban + + 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 . */ + +#ifndef __DISASM_H__ +#define __DISASM_H__ + #include #include #include +#include "uint32_from_hex.hpp" + +class Iinstr; + #include "Iinstr.hpp" using namespace std; @@ -10,27 +38,15 @@ class disasm { private: std::map 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 map) : instrs(map) {}; - std::string decode(std::string); + Iinstr* decode(std::string); + Iinstr* decodeNum(CDat); + std::string decodeToString(std::string str); }; +#endif