Start work on a debug view

This commit is contained in:
SimoZ64
2025-07-28 22:46:04 +02:00
parent 86c30f36e2
commit bf330959e8
9 changed files with 88 additions and 26 deletions

View File

@@ -12,6 +12,6 @@ struct BaseCPU {
virtual void Deserialize(const std::vector<u8> &) = 0;
virtual Mem &GetMem() = 0;
virtual Registers &GetRegs() = 0;
[[nodiscard]] virtual Disassembler::DisassemblyResult Disassemble(u32, u32) const = 0;
[[nodiscard]] virtual Disassembler::DisassemblyResult Disassemble(u32) = 0;
};
} // namespace n64

View File

@@ -13,7 +13,7 @@ struct Disassembler {
std::array<std::string, 3> ops{};
};
static Disassembler &instance(bool rsp = false) {
static Disassembler &GetInstance(bool rsp = false) {
static Disassembler ret(rsp);
return ret;
}

View File

@@ -21,8 +21,12 @@ void Interpreter::CheckCompareInterrupt() {
}
}
Disassembler::DisassemblyResult Interpreter::Disassemble(const u32 address, const u32 instruction) const {
return Disassembler::instance().Disassemble(address, instruction);
Disassembler::DisassemblyResult Interpreter::Disassemble(const u32 address) {
u32 paddr;
if (!regs.cop0.MapVAddr(Cop0::LOAD, address, paddr)) {
return {};
}
return Disassembler::GetInstance().Disassemble(address, mem.Read<u32>(regs, paddr));
}
int Interpreter::Step() {

View File

@@ -20,7 +20,7 @@ struct Interpreter : BaseCPU {
Mem &GetMem() override { return mem; }
Registers &GetRegs() override { return regs; }
[[nodiscard]] Disassembler::DisassemblyResult Disassemble(u32, u32) const override;
[[nodiscard]] Disassembler::DisassemblyResult Disassemble(u32) override;
private:
Registers regs;

View File

@@ -40,7 +40,7 @@ struct JIT : BaseCPU {
Registers &GetRegs() override { return regs; }
[[nodiscard]] Disassembler::DisassemblyResult Disassemble(u32, u32) const override { return {}; }
[[nodiscard]] Disassembler::DisassemblyResult Disassemble(u32) override { return {}; }
private:
Xbyak::CodeGenerator code{kCodeCacheAllocSize};