--- nono/m680x0/m68030disasm.h 2026/04/29 17:04:43 1.1.1.5 +++ nono/m680x0/m68030disasm.h 2026/04/29 17:05:26 1.1.1.9 @@ -10,15 +10,18 @@ #include "m68030.h" // 逆アセンブル -class m680x0disasm final : public Disasm +class m680x0disasm final : public DisasmLine { - using inherited = Disasm; + using inherited = DisasmLine; public: - m680x0disasm(DebuggerMemoryStream& mem); + m680x0disasm(); ~m680x0disasm() override; // 逆アセンブルを実行 - bool Exec() override; + bool Exec(DebuggerMemoryStream *mem_) override; + + // IOCS コール名を返す。なければ NULL を返す。(分岐履歴から呼ばれる) + static const char *GetIOCSName(int n) { return x68k_iocscall[n]; } private: uint32 pc0 {}; // 命令先頭アドレス @@ -71,9 +74,9 @@ class m680x0disasm final : public Disasm None, }; - virtual uint32 fetch16(); - virtual uint32 peek16(); // PC を進めずワードを取得 (IOCSコール用) - uint32 fetch32(); + uint32 fetch2(); + uint32 peek2(); // PC を進めずワードを取得 (IOCSコール用) + uint32 fetch4(); std::string make_reg(Reg); @@ -87,15 +90,15 @@ class m680x0disasm final : public Disasm std::string make_ea(uint); std::string make_eaix(std::string basereg); - std::string addr16(uint32 addr); // addr をワードアドレスとして - std::string addr32(uint32 addr); // addr をロングワードアドレスとして - std::string addr16(); // フェッチした値をワードアドレスとして - std::string addr32(); // フェッチした値をロングワードアドレスとして - std::string disp16(); // フェッチしたワードディスプレースメント - std::string disp32(); // フェッチしたロングワードディスプレースメント - std::string imm8(); - std::string imm16(); - std::string imm32(); + std::string addr2(uint32 addr); // addr をワードアドレスとして + std::string addr4(uint32 addr); // addr をロングワードアドレスとして + std::string addr2(); // フェッチした値をワードアドレスとして + std::string addr4(); // フェッチした値をロングワードアドレスとして + std::string disp2(); // フェッチしたワードディスプレースメント + std::string disp4(); // フェッチしたロングワードディスプレースメント + std::string imm1(); + std::string imm2(); + std::string imm4(); std::string make_dn(uint); std::string make_an(uint); std::string make_rn(uint); @@ -133,7 +136,6 @@ class m680x0disasm final : public Disasm void ops_btst_imm_ea(); void ops_move(Size sz); void ops_movem_ext(Size sz); - void ops_scc(); void ops_bcc(); void ops_sub(Size sz); void ops_add(Size sz);