summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/armv7/thumb2_disasm/il_thumb2.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/armv7/thumb2_disasm/il_thumb2.cpp b/arch/armv7/thumb2_disasm/il_thumb2.cpp
index f46a8641..50f9b3ef 100644
--- a/arch/armv7/thumb2_disasm/il_thumb2.cpp
+++ b/arch/armv7/thumb2_disasm/il_thumb2.cpp
@@ -1474,12 +1474,13 @@ bool GetLowLevelILForThumbInstruction(Architecture* arch, LowLevelILFunction& il
else
il.AddInstruction(il.SetRegister(4, LLIL_TEMP(0), il.Register(4, baseReg)));
+ uint32_t targetReg = decBeforeMode ? LLIL_TEMP(0) : baseReg;
for (int32_t i = 0, slot = 0; i <= regLimit; i++)
{
if ((regs >> i) & 1)
{
il.AddInstruction(il.Store(4,
- il.Add(4, il.Register(4, LLIL_TEMP(0)), il.Const(4, 4 * slot++)),
+ il.Add(4, il.Register(4, targetReg), il.Const(4, 4 * slot++)),
il.Register(4, GetRegisterByIndex(i))));
}
}