mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-06 21:47:44 +00:00
-added assemble option to disassembly view
-added 16bit li
This commit is contained in:
parent
961905cce8
commit
b6bca24850
@ -28,10 +28,10 @@ void SplitLine(const char* Line, char* Name, char* Arguments)
|
||||
*Arguments = 0;
|
||||
}
|
||||
|
||||
bool MipsAssembleOpcode(std::string& line, DebugInterface* cpu, u32 address, u32& dest)
|
||||
bool MipsAssembleOpcode(char* line, DebugInterface* cpu, u32 address, u32& dest)
|
||||
{
|
||||
char name[64],args[256];
|
||||
SplitLine(line.c_str(),name,args);
|
||||
SplitLine(line,name,args);
|
||||
|
||||
CMipsInstruction Opcode(cpu);
|
||||
if (cpu == NULL || Opcode.Load(name,args,(int)address) == false)
|
||||
|
@ -6,7 +6,7 @@
|
||||
namespace MIPSAsm
|
||||
{
|
||||
|
||||
bool MipsAssembleOpcode(std::string& line, DebugInterface* cpu, u32 address, u32& dest);
|
||||
bool MipsAssembleOpcode(char* line, DebugInterface* cpu, u32 address, u32& dest);
|
||||
|
||||
typedef enum eMipsImmediateType { MIPS_NOIMMEDIATE, MIPS_IMMEDIATE5,
|
||||
MIPS_IMMEDIATE16, MIPS_IMMEDIATE20, MIPS_IMMEDIATE26 };
|
||||
|
@ -219,6 +219,7 @@ const tMipsOpcode MipsOpcodes[] = {
|
||||
// OPCODE 09 - ADDIU
|
||||
{ "addiu", "t,s,i", 0x24000000, O_RT|O_RS|O_I16 },
|
||||
{ "addiu", "s,i", 0x24000000, O_RST|O_I16 },
|
||||
{ "li", "t,i", 0x24000000, O_RT|O_I16 },
|
||||
// OPCODE 0A - SLTI
|
||||
{ "slti", "t,s,i", 0x28000000, O_RT|O_RS|O_I16 },
|
||||
{ "slti", "s,i", 0x28000000, O_RST|O_I16 },
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "../WndMainWindow.h"
|
||||
#include "../InputBox.h"
|
||||
|
||||
#include "Core/MIPS/MIPSAsm.h"
|
||||
#include "Core/Config.h"
|
||||
#include "CtrlDisAsmView.h"
|
||||
#include "Debugger_MemoryDlg.h"
|
||||
@ -284,6 +285,25 @@ void CtrlDisAsmView::parseDisasm(const char* disasm, char* opcode, char* argumen
|
||||
*arguments = 0;
|
||||
}
|
||||
|
||||
void CtrlDisAsmView::assembleOpcode(u32 address, std::string defaultText)
|
||||
{
|
||||
char op[256];
|
||||
u32 encoded;
|
||||
|
||||
bool result = InputBox_GetString(MainWindow::GetHInstance(),wnd,"Assemble opcode",(char*)defaultText.c_str(),op);
|
||||
if (result == false) return;
|
||||
|
||||
result = MIPSAsm::MipsAssembleOpcode(op,debugger,address,encoded);
|
||||
if (result == true)
|
||||
{
|
||||
Memory::Write_U32(encoded,address);
|
||||
MIPSComp::jit->ClearCacheAt(address);
|
||||
redraw();
|
||||
} else {
|
||||
MessageBox(wnd,"Couldn''t assemble.","Error",MB_OK);
|
||||
}
|
||||
}
|
||||
|
||||
void CtrlDisAsmView::onPaint(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (!debugger->isAlive()) return;
|
||||
@ -498,6 +518,10 @@ void CtrlDisAsmView::onKeyDown(WPARAM wParam, LPARAM lParam)
|
||||
case 'x':
|
||||
disassembleToFile();
|
||||
break;
|
||||
case 'a':
|
||||
controlHeld = false;
|
||||
assembleOpcode(curAddress,"");
|
||||
break;
|
||||
case 'g':
|
||||
{
|
||||
u32 addr;
|
||||
@ -691,6 +715,9 @@ void CtrlDisAsmView::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
|
||||
toggleBreakpoint();
|
||||
redraw();
|
||||
break;
|
||||
case ID_DISASM_ASSEMBLE:
|
||||
assembleOpcode(curAddress,"");
|
||||
break;
|
||||
case ID_DISASM_COPYINSTRUCTIONDISASM:
|
||||
{
|
||||
int space = 256 * (selectRangeEnd - selectRangeStart) / instructionSize;
|
||||
|
@ -71,6 +71,7 @@ class CtrlDisAsmView
|
||||
bool searching;
|
||||
bool dontRedraw;
|
||||
|
||||
void assembleOpcode(u32 address, std::string defaultText);
|
||||
void disassembleToFile();
|
||||
void search(bool continueSearch);
|
||||
void followBranch();
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user