Annotation of nono/debugger/memdump.h, revision 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.