Added x87stX register names and menu action to switch ordering
This commit is contained in:
parent
8c6a9e5fed
commit
f5395cb318
|
|
@ -454,6 +454,7 @@ RegistersView::RegistersView(CPUWidget* parent) : QScrollArea(parent), mVScrollO
|
|||
connect(Bridge::getBridge(), SIGNAL(close()), this, SLOT(onClose()));
|
||||
switch(ConfigUint("Gui", "SIMDRegistersDisplayMode"))
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
wSIMDRegDispMode = SIMD_REG_DISP_HEX;
|
||||
break;
|
||||
|
|
@ -491,6 +492,7 @@ RegistersView::RegistersView(CPUWidget* parent) : QScrollArea(parent), mVScrollO
|
|||
wSIMDRegDispMode = SIMD_REG_DISP_QWORD_HEX;
|
||||
break;
|
||||
}
|
||||
mFpuMode = false;
|
||||
|
||||
// precreate ContextMenu Actions
|
||||
wCM_Increment = setupAction(DIcon("register_inc.png"), tr("Increment"), this);
|
||||
|
|
@ -519,6 +521,8 @@ RegistersView::RegistersView(CPUWidget* parent) : QScrollArea(parent), mVScrollO
|
|||
wCM_Highlight = setupAction(DIcon("highlight.png"), tr("Highlight"), this);
|
||||
mSwitchSIMDDispMode = new QMenu(tr("Change SIMD Register Display Mode"), this);
|
||||
mSwitchSIMDDispMode->setIcon(DIcon("simdmode.png"));
|
||||
mSwitchFPUDispMode = new QAction(tr("Change FPU Register ordering"), this);
|
||||
mSwitchFPUDispMode->setCheckable(true);
|
||||
SIMDHex = new QAction(tr("Hexadecimal"), mSwitchSIMDDispMode);
|
||||
SIMDFloat = new QAction(tr("Float"), mSwitchSIMDDispMode);
|
||||
SIMDDouble = new QAction(tr("Double"), mSwitchSIMDDispMode);
|
||||
|
|
@ -555,6 +559,7 @@ RegistersView::RegistersView(CPUWidget* parent) : QScrollArea(parent), mVScrollO
|
|||
connect(SIMDSQWord, SIGNAL(triggered()), this, SLOT(onSIMDMode()));
|
||||
connect(SIMDUQWord, SIGNAL(triggered()), this, SLOT(onSIMDMode()));
|
||||
connect(SIMDHQWord, SIGNAL(triggered()), this, SLOT(onSIMDMode()));
|
||||
connect(mSwitchFPUDispMode, SIGNAL(triggered()), this, SLOT(onFpuMode()));
|
||||
SIMDHex->setCheckable(true);
|
||||
SIMDFloat->setCheckable(true);
|
||||
SIMDDouble->setCheckable(true);
|
||||
|
|
@ -571,7 +576,7 @@ RegistersView::RegistersView(CPUWidget* parent) : QScrollArea(parent), mVScrollO
|
|||
SIMDFloat->setChecked(false);
|
||||
SIMDDouble->setChecked(false);
|
||||
SIMDSWord->setChecked(false);
|
||||
SIMDUWord->setChecked(true);
|
||||
SIMDUWord->setChecked(false);
|
||||
SIMDHWord->setChecked(false);
|
||||
SIMDSDWord->setChecked(false);
|
||||
SIMDUDWord->setChecked(false);
|
||||
|
|
@ -2911,6 +2916,7 @@ void RegistersView::displayCustomContextMenuSlot(QPoint pos)
|
|||
SIMDSQWord->setChecked(SIMDSQWord == selectedAction);
|
||||
SIMDUQWord->setChecked(SIMDUQWord == selectedAction);
|
||||
SIMDHQWord->setChecked(SIMDHQWord == selectedAction);
|
||||
mSwitchFPUDispMode->setChecked(mFpuMode);
|
||||
|
||||
if(mSelected != UNKNOWN)
|
||||
{
|
||||
|
|
@ -2997,6 +3003,7 @@ void RegistersView::displayCustomContextMenuSlot(QPoint pos)
|
|||
{
|
||||
wMenu.addMenu(mSwitchSIMDDispMode);
|
||||
}
|
||||
wMenu.addAction(mSwitchFPUDispMode);
|
||||
|
||||
wMenu.exec(this->mapToGlobal(pos));
|
||||
}
|
||||
|
|
@ -3006,6 +3013,7 @@ void RegistersView::displayCustomContextMenuSlot(QPoint pos)
|
|||
wMenu.addAction(wCM_ChangeFPUView);
|
||||
wMenu.addAction(wCM_CopyAll);
|
||||
wMenu.addMenu(mSwitchSIMDDispMode);
|
||||
wMenu.addAction(mSwitchFPUDispMode);
|
||||
wMenu.addSeparator();
|
||||
QAction* wHwbpCsp = wMenu.addAction(DIcon("breakpoint.png"), tr("Set Hardware Breakpoint on %1").arg(ArchValue("ESP", "RSP")));
|
||||
QAction* wAction = wMenu.exec(this->mapToGlobal(pos));
|
||||
|
|
@ -3445,6 +3453,12 @@ void RegistersView::onSIMDMode()
|
|||
emit refresh();
|
||||
}
|
||||
|
||||
void RegistersView::onFpuMode()
|
||||
{
|
||||
mFpuMode = !mFpuMode;
|
||||
emit refresh();
|
||||
}
|
||||
|
||||
void RegistersView::disasmSelectionChangedSlot(dsint va)
|
||||
{
|
||||
mHighlightRegs = mParent->getDisasmWidget()->DisassembleAt(va - mParent->getDisasmWidget()->getBase()).regsReferenced;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public:
|
|||
DR0, DR1, DR2, DR3, DR6, DR7,
|
||||
// x87 stuff
|
||||
x87r0, x87r1, x87r2, x87r3, x87r4, x87r5, x87r6, x87r7,
|
||||
x87st0, x87st1, x87st2, x87st3, x87st4, x87st5, x87st6, x87st7,
|
||||
x87TagWord, x87ControlWord, x87StatusWord,
|
||||
// x87 Tag Word fields
|
||||
x87TW_0, x87TW_1, x87TW_2, x87TW_3, x87TW_4, x87TW_5,
|
||||
|
|
@ -181,6 +182,7 @@ protected slots:
|
|||
void InitMappings();
|
||||
// switch SIMD display modes
|
||||
void onSIMDMode();
|
||||
void onFpuMode();
|
||||
void onClose();
|
||||
QString getRegisterLabel(REGISTER_NAME);
|
||||
int CompareRegisters(const REGISTER_NAME reg_name, REGDUMP* regdump1, REGDUMP* regdump2);
|
||||
|
|
@ -249,8 +251,10 @@ private:
|
|||
unsigned int mRowHeight, mCharWidth;
|
||||
// SIMD registers display mode
|
||||
SIMD_REG_DISP_MODE wSIMDRegDispMode;
|
||||
bool mFpuMode; //false = order by ST(X), true = order by x87rX
|
||||
// context menu actions
|
||||
QMenu* mSwitchSIMDDispMode;
|
||||
QAction* mSwitchFPUDispMode;
|
||||
QAction* mFollowInDump;
|
||||
QAction* wCM_Increment;
|
||||
QAction* wCM_Decrement;
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@ SimpleTraceDialog::SimpleTraceDialog(QWidget* parent) :
|
|||
if(!BridgeSettingGetUint("Engine", "MaxTraceCount", &setting))
|
||||
setting = 50000;
|
||||
ui->spinMaxTraceCount->setValue(int(setting));
|
||||
ui->editBreakCondition->setPlaceholderText(tr("Example: eax == 0 && ebx == 0"));
|
||||
ui->editLogText->setPlaceholderText(tr("Example: 0x{p:cip} {i:cip}"));
|
||||
ui->editLogCondition->setPlaceholderText(tr("Example: eax == 0 && ebx == 0"));
|
||||
ui->editCommandText->setPlaceholderText(tr("Example: eax=4;StepOut"));
|
||||
ui->editCommandCondition->setPlaceholderText(tr("Example: eax == 0 && ebx == 0"));
|
||||
ui->editSwitchCondition->setPlaceholderText(tr("Example: mod.party(dis.branchdest(cip)) == 1"));
|
||||
ui->editBreakCondition->setPlaceholderText(tr("Example: %1").arg("eax == 0 && ebx == 0"));
|
||||
ui->editLogText->setPlaceholderText(tr("Example: %1").arg("0x{p:cip} {i:cip}"));
|
||||
ui->editLogCondition->setPlaceholderText(tr("Example: %1").arg("eax == 0 && ebx == 0"));
|
||||
ui->editCommandText->setPlaceholderText(tr("Example: %1").arg("eax=4;StepOut"));
|
||||
ui->editCommandCondition->setPlaceholderText(tr("Example: %1").arg("eax == 0 && ebx == 0"));
|
||||
ui->editSwitchCondition->setPlaceholderText(tr("Example: %1").arg("mod.party(dis.branchdest(cip)) == 1"));
|
||||
}
|
||||
|
||||
SimpleTraceDialog::~SimpleTraceDialog()
|
||||
|
|
|
|||
Loading…
Reference in New Issue