--- nono/debugger/memdump.h 2026/04/29 17:05:16 1.1.1.2 +++ nono/debugger/memdump.h 2026/04/29 17:05:24 1.1.1.3 @@ -14,7 +14,6 @@ #include "debugger_memory.h" class DisasmLine; -class IOContainerDevice; // メモリダンプ/逆アセンブルをする人。 class Memdump : public Object @@ -50,17 +49,12 @@ class Memdump : public Object void InitMD(DebuggerMD *md_); - uint32 GetAddr() const { return saddr.GetAddr(); } + busaddr GetAddr() const { return saddr; } - // saddr を代入 - void SetAddr(const saddr_t& saddr_); - // 個別に設定 + // busaddr を代入 + void SetAddr(busaddr saddr_); + // アドレスを設定 void SetAddr(uint32 laddr_); - void SetSuper(bool super_); - void SetData(bool data_); - // モードを設定 - void SetAccessMode(MemoryMode access_mode_); - void SetLookupMode(MMULookupMode lookup_mode_); // アドレスをバイト単位で加算(減算) void Offset(int bytes); @@ -77,7 +71,7 @@ class Memdump : public Object // メモリの内容を(越権的に)読み出す。ここでは長さは bytes で指定。 uint64 Peek(uint32 paddr_, int bytes) const; // メモリの内容を(越権的に)書き換える。ここでは長さは bytes で指定。 - uint64 Poke(uint32 paddr_, uint32 data, int bytes); + bool Poke(uint32 paddr_, uint32 data, int bytes); // このアドレスが Poke 可能かどうかを返す。 bool CanPoke(uint32 paddr_) const; @@ -85,6 +79,8 @@ class Memdump : public Object void Print(FILE *cons, int row); protected: + void MaskAddr(); + std::vector Read(DebuggerMemoryStream&, int bytes); std::string DumpChar(const std::vector&); std::string DumpHex(const std::vector&); @@ -92,9 +88,7 @@ class Memdump : public Object std::string Dump88200Page(const std::vector&); // アドレス等 - saddr_t saddr {}; - MemoryMode access_mode {}; - MMULookupMode lookup_mode {}; + busaddr saddr {}; // 表示形式 Format fmt {}; @@ -109,7 +103,7 @@ class Memdump : public Object int inst_bytes {}; DebuggerMD *md {}; - IOContainerDevice *bus {}; + IODevice *bus {}; static const char * const dtname[4]; }; @@ -133,12 +127,12 @@ class MemdumpMonitor : public Memdump void Update68030PageShort(TextScreen&, int, int, const std::vector&); void Update88200Page(TextScreen&, int, int, const std::vector&); - // 次の命令開始アドレス。少し変則的だが、一番上の行を1行目として、 - // [0] が2行目のアドレス、 - // [1] が3行目のアドレス、 + // 命令開始アドレス。 + // [0] が1行目のアドレス、 + // [1] が2行目のアドレス、 // : - // [row - 2] が表示されてる最下行のアドレス、 - // [row - 1] が最下行の次のアドレス、 + // [row - 1] が表示されてる最下行のアドレス、 + // [row] が最下行の次のアドレス、 // を指している。 std::vector nextaddr {};