--- nono/debugger/disasm.h 2026/04/29 17:04:43 1.1.1.4 +++ nono/debugger/disasm.h 2026/04/29 17:05:58 1.1.1.8 @@ -4,26 +4,24 @@ // Licensed under nono-license.txt // -// 逆アセンブラ(共通部分) +// +// 逆アセンブラ (共通部分) +// #pragma once #include "debugger_private.h" -// 逆アセンブラ抽象クラス -class Disasm +// 逆アセンブラ(1行分)の基本クラス。 +class DisasmLine { public: - Disasm(DebuggerMemoryStream& mem_) - : mem(mem_) - { - } - virtual ~Disasm(); + virtual ~DisasmLine(); - // mem.laddr の位置を1命令逆アセンブルする。 + // mem の位置を1命令逆アセンブルする。 // 成功すれば true、失敗すれば false を返す? // 成功すれば text に出力文字列、ir に命令バイナリがセットされている。 - virtual bool Exec() = 0; + virtual bool Exec(DebuggerMemoryStream *memp) = 0; // 出力文字列(ダンプ) std::string dump {}; @@ -31,17 +29,23 @@ class Disasm // 出力文字列(命令) std::string text {}; + // 別名 (m88k で使う) + std::string alttext {}; + // この命令のバイナリ列 // (メモリイメージ順) std::vector bin {}; - protected: - // メモリアクセス。 - DebuggerMemoryStream& mem; + // メモリアクセス + DebuggerMemoryStream *mem {}; - // 継承先の Exec() の先頭で呼び出してください。 - void ExecInit() { + protected: + // 継承先の Exec() の先頭で呼び出すこと。 + void ExecInit(DebuggerMemoryStream *mem_) { + mem = mem_; + dump.clear(); text.clear(); + alttext.clear(); bin.clear(); } };