#ifndef __MIPSDIS_H__ #define __MIPSDIS_H__ #include #include #include "mipsmem.h" class TDis : public Base { public: TDis(mipsmem *); virtual mipsmem * getmem(); virtual void add_branch(Uint32); virtual void add_jump(Uint32); virtual void add_function(Uint32); virtual void SetTag(Uint32, int, bool); virtual void Name(const String &); virtual void PushGPReg(int); virtual void PushCPReg(int); virtual void PushImm(Uint32); virtual void PushTarget(Uint32); virtual void PushSa(Uint32); virtual void PushOfB(int reg, Uint32, int); virtual void PushOffset(Uint32); virtual void PushFull(Uint32); virtual void Invalid(); virtual void Suspect(); virtual void Comment(const String &); virtual void reset(); bool invalid; std::priority_queue, std::greater > bheap; std::priority_queue, std::greater > jheap; std::priority_queue, std::greater > fheap; Uint32 pc; private: mipsmem * mm; }; class Disassembler : public Base { public: Disassembler(mipsmem *); virtual ~Disassembler(); void mainloop(); void crawl_code(Uint32 = 0xffffffff); private: mipsmem * mm; TDis * dis; bool started; bool infunction; }; #endif