1
0
Fork 0

GUI: resolved issue #179 (last error in register view)

This commit is contained in:
Mr. eXoDia 2015-04-04 17:06:16 +02:00
parent 22d80a34f8
commit b9b16289ca
3 changed files with 26 additions and 2 deletions

View File

@ -125,10 +125,12 @@ void HexEditDialog::dataChangedSlot()
void HexEditDialog::on_lineEditAscii_textEdited(const QString & arg1)
{
Q_UNUSED(arg1);
on_btnAscii2Hex_clicked();
}
void HexEditDialog::on_lineEditUnicode_textEdited(const QString & arg1)
{
Q_UNUSED(arg1);
on_btnUnicode2Hex_clicked();
}

View File

@ -121,6 +121,11 @@ void RegistersView::InitMappings()
offset++;
mRegisterMapping.insert(LastError, "LastError");
mRegisterPlaces.insert(LastError, Register_Position(offset++, 0, 11, 20));
offset++;
mRegisterMapping.insert(GS, "GS");
mRegisterPlaces.insert(GS, Register_Position(offset, 0, 3, 4));
mRegisterMapping.insert(FS, "FS");
@ -1025,6 +1030,8 @@ RegistersView::RegistersView(QWidget* parent) : QScrollArea(parent), mVScrollOff
mFPU.insert(YMM15);
#endif
//registers that should not be changed
mNoChange.insert(LastError);
mNoChange.insert(GS);
mUSHORTDISPLAY.insert(GS);
@ -1452,6 +1459,15 @@ QString RegistersView::GetRegStringValueFromValue(REGISTER_NAME reg, char* value
valueText += QString(")");
}
}
else if(reg == LastError)
{
LASTERROR* data = (LASTERROR*)value;
if(data->name)
valueText = QString().sprintf("%08X (%s)", data->code, data->name);
else
valueText = QString().sprintf("%08X", data->code);
mRegisterPlaces[LastError].valuesize = valueText.length();
}
else
{
SIZE_T size = GetSizeRegister(reg);
@ -1705,6 +1721,9 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
else
p->setPen(ConfigColor("RegistersColor"));
//get register value
QString valueText = GetRegStringValueFromValue(reg, value);
//selection
if(mSelected == reg)
{
@ -1712,9 +1731,7 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
//p->fillRect(QRect(x + (mRegisterPlaces[reg].labelwidth)*mCharWidth ,mRowHeight*(mRegisterPlaces[reg].line)+2, mRegisterPlaces[reg].valuesize*mCharWidth, mRowHeight), QBrush(ConfigColor("RegistersSelectionColor")));
}
QString valueText;
// draw value
valueText = GetRegStringValueFromValue(reg, value);
width = mCharWidth * valueText.length();
p->drawText(x, y, width, mRowHeight, Qt::AlignVCenter, valueText);
//p->drawText(x + (mRegisterPlaces[reg].labelwidth)*mCharWidth ,mRowHeight*(mRegisterPlaces[reg].line+1),QString("%1").arg(value, mRegisterPlaces[reg].valuesize, 16, QChar('0')).toUpper());
@ -2211,6 +2228,8 @@ SIZE_T RegistersView::GetSizeRegister(const REGISTER_NAME reg_name)
size = 16;
else if(mFPUYMM.contains(reg_name))
size = 32;
else if(reg_name == LastError)
return sizeof(LASTERROR);
else
size = 0;
@ -2274,6 +2293,8 @@ char* RegistersView::registerValue(const REGDUMP* regd, const REGISTER_NAME reg)
if(reg == CS) return (char*) & (regd->regcontext.cs);
if(reg == SS) return (char*) & (regd->regcontext.ss);
if(reg == LastError) return (char*) & (regd->lastError);
if(reg == DR0) return (char*) & (regd->regcontext.dr0);
if(reg == DR1) return (char*) & (regd->regcontext.dr1);
if(reg == DR2) return (char*) & (regd->regcontext.dr2);

View File

@ -34,6 +34,7 @@ public:
CIP,
EFLAGS, CF, PF, AF, ZF, SF, TF, IF, DF, OF,
GS, FS, ES, DS, CS, SS,
LastError,
DR0, DR1, DR2, DR3, DR6, DR7,
// x87 stuff
x87r0, x87r1, x87r2, x87r3, x87r4, x87r5, x87r6, x87r7,