-ctrl+g for goto in mem viewer/disassembly

-removed skipping of zz_/z_ in disassembly
-fixes to the expression parser
This commit is contained in:
Kingcom committed 2013-06-29 22:25:17 +02:00
1 parent 9ec27e4f92
commit 6df25d52f0
6 files changed
+33 -15

No files matched your search

+1 -1
View File
@@ -248,7 +248,7 @@ bool SymbolMap::getSymbolValue(char* symbol, u32& dest)
if (strcasecmp(entry.name,symbol) == 0)
#endif
{
dest = entries[i].address;
dest = entries[i].vaddress;
return true;
}
}
+9 -9
View File
@@ -194,9 +194,6 @@ bool CtrlDisAsmView::getDisasmAddressText(u32 address, char* dest, bool abbrevia
const char* addressSymbol = debugger->findSymbolForAddress(address);
if (addressSymbol != NULL)
{
if (memcmp(addressSymbol,"z_",2) == 0) addressSymbol += 2;
if (memcmp(addressSymbol,"zz_",3) == 0) addressSymbol += 3;
for (int k = 0; addressSymbol[k] != 0; k++)
{
// abbreviate long names
@@ -250,8 +247,6 @@ void CtrlDisAsmView::parseDisasm(const char* disasm, char* opcode, char* argumen
const char* addressSymbol = debugger->findSymbolForAddress(branchTarget);
if (addressSymbol != NULL && displaySymbols)
{
if (memcmp(addressSymbol,"z_",2) == 0) addressSymbol += 2;
if (memcmp(addressSymbol,"zz_",3) == 0) addressSymbol += 3;
arguments += sprintf(arguments,"%s",addressSymbol);
} else {
arguments += sprintf(arguments,"0x%08X",branchTarget);
@@ -490,20 +485,25 @@ void CtrlDisAsmView::onKeyDown(WPARAM wParam, LPARAM lParam)
if (controlHeld)
{
switch (wParam & 0xFFFF)
switch (tolower(wParam & 0xFFFF))
{
case 'S':
case 's':
search(false);
break;
case 'C':
case 'c':
search(true);
break;
case 'x':
case 'X':
disassembleToFile();
break;
case 'g':
{
u32 addr;
controlHeld = false;
if (executeExpressionWindow(wnd,debugger,addr) == false) return;
gotoAddr(addr);
}
break;
}
} else {
switch (wParam & 0xFFFF)
+21 -2
View File
@@ -12,6 +12,7 @@
#include "../../Core/Debugger/SymbolMap.h"
#include "Debugger_Disasm.h"
#include "ExpressionParser.h"
#include "CtrlMemView.h"
@@ -35,6 +36,7 @@ CtrlMemView::CtrlMemView(HWND _wnd)
mode=MV_NORMAL;
debugger = 0;
ctrlDown = false;
hasFocus = false;
windowStart = curAddress;
asciiSelected = false;
@@ -119,10 +121,13 @@ LRESULT CALLBACK CtrlMemView::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
return FALSE;
case WM_KEYDOWN:
ccp->onKeyDown(wParam,lParam);
break;
return 0;
case WM_CHAR:
ccp->onChar(wParam,lParam);
break;
return 0;
case WM_KEYUP:
if (wParam == VK_CONTROL) ccp->ctrlDown = false;
return 0;
case WM_LBUTTONDOWN: SetFocus(hwnd); lmbDown=true; ccp->onMouseDown(wParam,lParam,1); break;
case WM_RBUTTONDOWN: SetFocus(hwnd); rmbDown=true; ccp->onMouseDown(wParam,lParam,2); break;
case WM_MOUSEMOVE: ccp->onMouseMove(wParam,lParam,(lmbDown?1:0) | (rmbDown?2:0)); break;
@@ -340,6 +345,15 @@ void CtrlMemView::onVScroll(WPARAM wParam, LPARAM lParam)
void CtrlMemView::onKeyDown(WPARAM wParam, LPARAM lParam)
{
if (ctrlDown && tolower(wParam & 0xFFFF) == 'g')
{
ctrlDown = false;
u32 addr;
if (executeExpressionWindow(wnd,debugger,addr) == false) return;
gotoAddr(addr);
return;
}
switch (wParam & 0xFFFF)
{
case VK_DOWN:
@@ -360,6 +374,9 @@ void CtrlMemView::onKeyDown(WPARAM wParam, LPARAM lParam)
case VK_PRIOR:
scrollWindow(-visibleRows);
break;
case VK_CONTROL:
ctrlDown = true;
break;
default:
return;
}
@@ -367,6 +384,8 @@ void CtrlMemView::onKeyDown(WPARAM wParam, LPARAM lParam)
void CtrlMemView::onChar(WPARAM wParam, LPARAM lParam)
{
if (ctrlDown) return;
if (!Memory::IsValidAddress(curAddress))
{
scrollCursor(1);
+1
View File
@@ -44,6 +44,7 @@ class CtrlMemView
int asciiStart;
bool asciiSelected;
int selectedNibble;
bool ctrlDown;
int visibleRows;
-2
View File
@@ -362,8 +362,6 @@ void CDisasm::handleBreakpointNotify(LPARAM lParam)
const char* sym = cpu->findSymbolForAddress(CBreakPoints::GetBreakpointAddress(index));
if (sym != NULL)
{
if (memcmp(sym,"z_",2) == 0) sym += 2;
if (memcmp(sym,"zz_",3) == 0) sym += 3;
strcpy(breakpointText,sym);
} else {
strcpy(breakpointText,"-");
+1 -1
View File
@@ -222,7 +222,7 @@ bool parseExpression(char* infix, DebugInterface* cpu, u32& dest)
while (infixPos < infixLen)
{
char first = tolower(infix[infixPos]);
char subStr[12];
char subStr[256];
int subPos = 0;
if (first == ' ' || first == '\t')