Annotation of nono/debugger/memdump.h, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2019 [email protected]
                      4: //
                      5: 
                      6: #pragma once
                      7: 
                      8: #include "m68030.h"
                      9: #include "disasm.h"
                     10: 
                     11: // 逆アセンブル、メモリダンプを行う際のアドレス解決方法を指定する。
                     12: enum MemdumpMode {
                     13:        Physical = 0,           // 物理アドレス
                     14:        Logical_atc,            // 論理アドレス (ただし TT、ATC のみ検索)
                     15:        Logical_search,         // 論理アドレス (TT、ATC、テーブルサーチすべて行う)
                     16: };
                     17: 
                     18: //
                     19: // 逆アセンブルを表示する。
                     20: //
                     21: class DisasmLine
                     22: {
                     23:  public:
                     24:        DisasmLine(m68kcpu *arg, uint32 addr, MemdumpMode mode);
                     25:        virtual ~DisasmLine() { }
                     26: 
                     27:        // 1行分の逆アセンブル文字列を返す。改行は付加していない。
                     28:        std::string Output();
                     29: 
                     30:        // 表示した次のアドレスを取得する
                     31:        uint32 GetNextAddr() const { return laddr; }
                     32: 
                     33:  private:
                     34:        m68kcpu *cpu = NULL;
                     35:        Disasm disasm {};
                     36:        uint32 laddr = 0;
                     37:        MemdumpMode mode {};
                     38:        uint fc2 = 0;
                     39:        uint64 paddr = 0;
                     40:        uint32 last_lpage = 0;
                     41:        uint last_fc2 = 0;
                     42:        bool is_logical = false;
                     43: };
                     44: 
                     45: //
                     46: // メモリダンプを表示する。
                     47: //
                     48: // このインスタンスは長期間維持してはいけない。cpu->mmu_tc の状態を参照して
                     49: // メンバ変数と比較する処理があるので、インスタンスの生存期間中に CPU の
                     50: // 状態が変わることは想定していない。基本的に1回のダンプ表示(数行程度)で
                     51: // 寿命を終えること。
                     52: //
                     53: class MemdumpLine
                     54: {
                     55:  public:
                     56:        MemdumpLine(m68kcpu *arg, uint32 addr, MemdumpMode mode);
                     57:        virtual ~MemdumpLine() { }
                     58: 
                     59:        // 1行分のメモリダンプ文字列を返す。改行は付加していない。
                     60:        std::string Output();
                     61: 
                     62:        // 表示した次のアドレスを取得する
                     63:        uint32 GetNextAddr() const { return laddr; }
                     64: 
                     65:  private:
                     66:        m68kcpu *cpu = NULL;
                     67:        uint32 laddr = 0;
                     68:        MemdumpMode mode {};
                     69:        uint fc2 = 0;
                     70:        uint64 paddr = 0;
                     71:        uint32 last_lpage = 0;
                     72:        uint last_fc2 = 0;
                     73:        bool is_logical = false;
                     74: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.