Annotation of nono/debugger/disasm.h, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2020 [email protected]
        !             4: //
        !             5: 
        !             6: // 逆アセンブラ(共通部分)
        !             7: 
        !             8: #pragma once
        !             9: 
        !            10: #include "header.h"
        !            11: #include "debugger_private.h"
        !            12: 
        !            13: // 逆アセンブラ抽象クラス
        !            14: class Disasm
        !            15: {
        !            16:  public:
        !            17:        // コンストラクタ
        !            18:        Disasm(DebuggerMD *m) {
        !            19:                md = m;
        !            20:        }
        !            21:        virtual ~Disasm() { }
        !            22: 
        !            23:        // laddr の位置を1命令逆アセンブルする。
        !            24:        // 成功すれば true、失敗すれば false を返す?
        !            25:        // 成功すれば text に出力文字列、ir に命令バイナリがセットされている。
        !            26:        //
        !            27:        // Exec() 実装は、laddr が論理アドレスなら md->TranslateAddr() を呼んで
        !            28:        // 物理アドレスを取得し、vm_phys_peek8() で物理メモリを読み出すこと。
        !            29:        virtual bool Exec(saddr_t laddr) = 0;
        !            30: 
        !            31:        // 出力文字列(ダンプ)
        !            32:        std::string dump {};
        !            33: 
        !            34:        // 出力文字列(命令)
        !            35:        std::string text {};
        !            36: 
        !            37:        // この命令のバイナリ列
        !            38:        // (メモリイメージ順)
        !            39:        std::vector<uint8> bin {};
        !            40: 
        !            41:  protected:
        !            42:        // デバッガ(MD)クラス。TranslateAddr() のため。
        !            43:        DebuggerMD *md {};
        !            44: 
        !            45:        // 継承先の Exec() の先頭で呼び出してください。
        !            46:        void ExecInit() {
        !            47:                text.clear();
        !            48:                bin.clear();
        !            49:        }
        !            50: };

unix.superglobalmegacorp.com

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