|
|
1.1 root 1: //
2: // nono
1.1.1.2 ! root 3: // Copyright (C) 2020 nono project
! 4: // Licensed under nono-license.txt
1.1 root 5: //
6:
7: #pragma once
8:
9: #include "debugger_private.h"
1.1.1.2 ! root 10: #include "mpu680x0.h"
1.1 root 11: #include "m68030.h"
12: #include "m68030disasm.h"
13:
14: class DebuggerMD_m680x0 : public DebuggerMD
15: {
1.1.1.2 ! root 16: using inherited = DebuggerMD;
1.1 root 17: public:
1.1.1.2 ! root 18: DebuggerMD_m680x0(Debugger *parent, m68kcpu *cpu);
! 19: ~DebuggerMD_m680x0() override;
! 20:
! 21: void ReqSet(uint32 flag) override { cpu->atomic_reqflag |= flag; }
! 22: void ReqClr(uint32 flag) override { cpu->atomic_reqflag &= ~flag; }
! 23:
! 24: bool IsSuper() const override { return cpu->reg.s; }
! 25: bool MMUEnabled() const override { return cpu->mmu_enable; }
! 26: uint64 TranslateAddr(saddr_t laddr) override;
! 27:
! 28: uint32 GetPC() const override { return RegPC; }
! 29:
! 30: void SetStepOut() override;
! 31: bool IsStepOut() const override;
! 32: uint64 GetRegAddr(const char *name) const override;
! 33: void BackupRegs() override { prev = cpu->reg; }
! 34: bool ShowRegister(Console *cons, const std::vector<std::string>& args)
! 35: override;
! 36: const HelpMessages& GetRegisterHelp() const override;
1.1 root 37:
1.1.1.2 ! root 38: Object& GetBrHist() const override { return cpu->brhist; }
! 39:
! 40: bool CheckLEA(uint32 laddr) override { return false; }
1.1 root 41:
42: bool Disassemble(saddr_t laddr,
1.1.1.2 ! root 43: std::string& mnemonic, std::vector<uint8>& bin) override;
1.1 root 44: std::string FormatDisasm(const std::string& mnemonic,
1.1.1.2 ! root 45: const std::vector<uint8>& bin) override;
1.1 root 46: std::string FormatDisasmLive(const std::string& mnemonic,
1.1.1.2 ! root 47: const std::vector<uint8>& bin) override;
1.1 root 48:
49: private:
50: m68kcpu *cpu = NULL; // CPU コア
51: m68kreg prev {}; // 前回のレジスタセットのコピー
52:
1.1.1.2 ! root 53: // 前回アクセス時の論理ページ。.addr == 0xffffffff なら無効。
! 54: saddr_t last_lpage;
! 55: uint32 last_ppage;
! 56:
1.1 root 57: const char *CondStr(const std::vector<uint16>& ir);
58: bool IsOPcc(uint16 op);
59: bool IsDBcc(uint16 op);
60: bool IsCond(uint16 op);
61:
1.1.1.2 ! root 62: static const HelpMessages HelpMsgRegister;
! 63: void ShowRegMain(Console *cons);
! 64: void ShowRegFPU(Console *cons);
! 65: void ShowRegMMU(Console *cons);
! 66: void ShowRegATC(Console *cons);
! 67: void ShowRegOther(Console *cons);
! 68:
1.1 root 69: uint32 so_a7 = 0; // ステップアウト判定用
70: uint16 so_sr = 0;
71: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.