Handle it better when viewing an invalid addr.

This commit is contained in:
Unknown W. Brackets 2013-10-06 15:07:54 -07:00
parent 1cd9f01358
commit 0c03dc2dec
2 changed files with 6 additions and 3 deletions

View File

@ -1065,9 +1065,10 @@ std::vector<GPUDebugOp> GPUCommon::DissassembleOpRange(u32 startpc, u32 endpc) {
std::vector<GPUDebugOp> result;
GPUDebugOp info;
u32 prev = Memory::Read_U32(startpc - 4);
// Don't trigger a pause.
u32 prev = Memory::IsValidAddress(startpc - 4) ? Memory::Read_U32(startpc - 4) : 0;
for (u32 pc = startpc; pc < endpc; pc += 4) {
u32 op = Memory::Read_U32(pc);
u32 op = Memory::IsValidAddress(pc) ? Memory::Read_U32(pc) : 0;
GeDisassembleOp(pc, op, prev, buffer);
prev = op;

View File

@ -167,6 +167,8 @@ void CtrlDisplayListView::onPaint(WPARAM wParam, LPARAM lParam)
HICON breakPoint = (HICON)LoadIcon(GetModuleHandle(0),(LPCWSTR)IDI_STOP);
auto disasm = gpuDebug->DissassembleOpRange(windowStart, windowStart + (visibleRows + 2) * instructionSize);
for (int i = 0; i < visibleRows+2; i++)
{
unsigned int address=windowStart + i*instructionSize;
@ -211,7 +213,7 @@ void CtrlDisplayListView::onPaint(WPARAM wParam, LPARAM lParam)
}
SetTextColor(hdc,textColor);
GPUDebugOp op = gpuDebug->DissassembleOp(address);
GPUDebugOp op = i < (int)disasm.size() ? disasm[i] : GPUDebugOp();
char addressText[64];
sprintf(addressText,"%08X %08X",op.pc,op.op);