--- nono/debugger/disasm.h 2026/04/29 17:04:30 1.1.1.1 +++ nono/debugger/disasm.h 2026/04/29 17:04:43 1.1.1.4 @@ -1,32 +1,29 @@ // // nono -// Copyright (C) 2020 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // // 逆アセンブラ(共通部分) #pragma once -#include "header.h" #include "debugger_private.h" // 逆アセンブラ抽象クラス class Disasm { public: - // コンストラクタ - Disasm(DebuggerMD *m) { - md = m; + Disasm(DebuggerMemoryStream& mem_) + : mem(mem_) + { } - virtual ~Disasm() { } + virtual ~Disasm(); - // laddr の位置を1命令逆アセンブルする。 + // mem.laddr の位置を1命令逆アセンブルする。 // 成功すれば true、失敗すれば false を返す? // 成功すれば text に出力文字列、ir に命令バイナリがセットされている。 - // - // Exec() 実装は、laddr が論理アドレスなら md->TranslateAddr() を呼んで - // 物理アドレスを取得し、vm_phys_peek8() で物理メモリを読み出すこと。 - virtual bool Exec(saddr_t laddr) = 0; + virtual bool Exec() = 0; // 出力文字列(ダンプ) std::string dump {}; @@ -39,8 +36,8 @@ class Disasm std::vector bin {}; protected: - // デバッガ(MD)クラス。TranslateAddr() のため。 - DebuggerMD *md {}; + // メモリアクセス。 + DebuggerMemoryStream& mem; // 継承先の Exec() の先頭で呼び出してください。 void ExecInit() {