1
0
Fork 0

GUI: properly fixed #1408

This commit is contained in:
mrexodia 2017-01-06 11:34:21 +01:00
parent 04a97b51d6
commit 37fe2150e9
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
3 changed files with 19 additions and 3 deletions

@ -1 +1 @@
Subproject commit c8ca8305e29d21f10ead878609048aca0b10e59c
Subproject commit 46b59b43ceb0209d7ab46d7f69bd16003b40b5a9

View File

@ -51,7 +51,7 @@ void CPUArgumentWidget::disassembledAtSlot(dsint, dsint cip, bool, dsint)
DbgDisasmFastAt(cip, &disasm);
const auto & cur = mCallingConventions[mCurrentCallingConvention];
mStackOffset = disasm.call ? 0 : cur.getCallOffset();
mStackOffset = cur.getStackOffset() + (disasm.call ? 0 : cur.getCallOffset());
if(ui->checkBoxLock->checkState() == Qt::PartiallyChecked) //Calls
{
mAllowUpdate = disasm.call;

View File

@ -87,9 +87,11 @@ private:
QString name;
int stackArgCount;
QString stackLocation32;
duint stackOffset32;
duint callOffset32;
QString stackLocation64;
duint callOffset64;
duint stackOffset64;
std::vector<Argument> arguments;
const QString & getStackLocation() const
@ -97,6 +99,11 @@ private:
return ArchValue(stackLocation32, stackLocation64);
}
const duint getStackOffset() const
{
return ArchValue(stackOffset32, stackOffset64);
}
const duint & getCallOffset() const
{
return ArchValue(callOffset32, callOffset64);
@ -107,12 +114,21 @@ private:
arguments.push_back(argument);
}
explicit CallingConvention(const QString & name, int stackArgCount = 0, const QString & stackLocation32 = "esp", duint callOffset32 = sizeof(duint), const QString & stackLocation64 = "rsp", duint callOffset64 = sizeof(duint) * 5)
explicit CallingConvention(const QString & name,
int stackArgCount = 0,
const QString & stackLocation32 = "esp",
duint stackOffset32 = 0,
duint callOffset32 = sizeof(duint),
const QString & stackLocation64 = "rsp",
duint stackOffset64 = 0x20,
duint callOffset64 = sizeof(duint))
: name(name),
stackArgCount(stackArgCount),
stackLocation32(stackLocation32),
stackOffset32(stackOffset32),
callOffset32(callOffset32),
stackLocation64(stackLocation64),
stackOffset64(stackOffset64),
callOffset64(callOffset64)
{
}