#include "pch.h" #include "Debugger/ExpressionEvaluator.h" #include "SNES/Debugger/St018Debugger.h" #include "SNES/Coprocessors/ST018/ArmV3Types.h" unordered_map& ExpressionEvaluator::GetSt018Tokens() { static unordered_map supportedTokens = { { "r0", EvalValues::R0 }, { "r1", EvalValues::R1 }, { "r2", EvalValues::R2 }, { "r3", EvalValues::R3 }, { "r4", EvalValues::R4 }, { "r5", EvalValues::R5 }, { "r6", EvalValues::R6 }, { "r7", EvalValues::R7 }, { "r8", EvalValues::R8 }, { "r9", EvalValues::R9 }, { "r10", EvalValues::R10 }, { "r11", EvalValues::R11 }, { "r12", EvalValues::R12 }, { "r13", EvalValues::R13 }, { "r14", EvalValues::R14 }, { "r15", EvalValues::R15 }, { "sp", EvalValues::R13 }, { "lr", EvalValues::R14 }, { "pc", EvalValues::R15 }, { "cpsr", EvalValues::CPSR } }; return supportedTokens; } int64_t ExpressionEvaluator::GetSt018TokenValue(int64_t token, EvalResultType& resultType) { ArmV3CpuState& s = (ArmV3CpuState&)((St018Debugger*)_cpuDebugger)->GetState(); switch(token) { case EvalValues::R0: return s.R[0]; case EvalValues::R1: return s.R[1]; case EvalValues::R2: return s.R[2]; case EvalValues::R3: return s.R[3]; case EvalValues::R4: return s.R[4]; case EvalValues::R5: return s.R[5]; case EvalValues::R6: return s.R[6]; case EvalValues::R7: return s.R[7]; case EvalValues::R8: return s.R[8]; case EvalValues::R9: return s.R[9]; case EvalValues::R10: return s.R[10]; case EvalValues::R11: return s.R[11]; case EvalValues::R12: return s.R[12]; case EvalValues::R13: return s.R[13]; case EvalValues::R14: return s.R[14]; case EvalValues::R15: return s.R[15]; case EvalValues::CPSR: return s.CPSR.ToInt32(); default: return 0; } }