|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2022 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // HD64180 逆アセンブラ ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "disasm.h" ! 14: #include "hd64180.h" ! 15: ! 16: class hd64180disasm final : public DisasmLine ! 17: { ! 18: using inherited = DisasmLine; ! 19: ! 20: public: ! 21: hd64180disasm(); ! 22: ~hd64180disasm() override; ! 23: ! 24: // 逆アセンブルを実行 ! 25: bool Exec(DebuggerMemoryStream *mem_) override; ! 26: ! 27: private: ! 28: uint8 fetch8(); ! 29: uint16 fetch16(); ! 30: ! 31: uint16 ppc {}; ! 32: ixiy_t ixiy {}; ! 33: uint32 ixd {}; // (IX+d)/(IY+d) ! 34: uint8 op {}; // 直近の命令ワード ! 35: ! 36: std::string name {}; ! 37: std::string arg1 {}; ! 38: std::string arg2 {}; ! 39: ! 40: std::string HL(); ! 41: std::string HLin(); ! 42: std::string IXin(); ! 43: std::string ww(); ! 44: std::string wwin(); ! 45: std::string zz(); ! 46: std::string rrr(); ! 47: std::string sss(); ! 48: std::string rrrsss(uint); ! 49: std::string fff() const; ! 50: std::string bbb() const; ! 51: std::string imm8(); ! 52: std::string imm16(); ! 53: std::string disp8(); ! 54: ! 55: void ops_ddfd(ixiy_t); ! 56: ! 57: #define OP_PROTO(name) void __CONCAT(op_,name)() ! 58: #include "hd64180ops.h" ! 59: OP_PROTO(00); ! 60: OP_PROTO(illegal); ! 61: OP_PROTO(undef); ! 62: #undef OP_PROTO ! 63: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.