|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 [email protected]
4: //
5:
6: #pragma once
7:
8: #include "debugger_private.h"
9: #include "m68030.h"
10: #include "m68030disasm.h"
11:
12: class DebuggerMD_m680x0 : public DebuggerMD
13: {
14: typedef DebuggerMD inherited;
15: public:
16: DebuggerMD_m680x0(Debugger *parg, m68kcpu *carg)
17: : inherited(parg)
18: {
19: cpu = carg;
20: }
21: virtual ~DebuggerMD_m680x0() { }
22:
23: void ReqSet(uint32 flag) { cpu->atomic_reqflag |= flag; }
24: void ReqClr(uint32 flag) { cpu->atomic_reqflag &= ~flag; }
25:
26: bool IsSuper() const { return cpu->reg.s; }
27: bool MMUEnabled() const { return cpu->mmu_enable; }
28: uint64 TranslateAddr(saddr_t laddr);
29:
30: uint32 GetPC() const { return RegPC; }
31:
32: void SetStepOut();
33: bool IsStepOut() const;
34: uint64 GetRegAddr(const char *name) const;
35: void BackupRegs() { prev = cpu->reg; }
36: void ShowRegMain(Console *cons);
37: void ShowRegCtrl(Console *cons) {}
38: void ShowRegFPU(Console *cons);
39: void ShowRegMMU(Console *cons);
40: void ShowRegATC(Console *cons);
41: void ShowRegOther(Console *cons);
42:
43: bool CheckLEA(uint32 laddr) { return false; }
44:
45: bool Disassemble(saddr_t laddr,
46: std::string& mnemonic, std::vector<uint8>& bin);
47: std::string FormatDisasm(const std::string& mnemonic,
48: const std::vector<uint8>& bin);
49: std::string FormatDisasmLive(const std::string& mnemonic,
50: const std::vector<uint8>& bin);
51:
52: private:
53: m68kcpu *cpu = NULL; // CPU コア
54: m68kreg prev {}; // 前回のレジスタセットのコピー
55:
56: const char *CondStr(const std::vector<uint16>& ir);
57: bool IsOPcc(uint16 op);
58: bool IsDBcc(uint16 op);
59: bool IsCond(uint16 op);
60:
61: uint32 so_a7 = 0; // ステップアウト判定用
62: uint16 so_sr = 0;
63: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.