diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm/arch/ia32_sem.py | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py index af73c359..240cf79e 100644 --- a/miasm/arch/ia32_sem.py +++ b/miasm/arch/ia32_sem.py @@ -1163,18 +1163,15 @@ def pushad(info): opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 - myesp = esp[:16] regs = [eax[:16], ecx[:16], edx[:16], ebx[:16], esp[:16], ebp[:16], esi[:16], edi[:16]] else: s = 32 - myesp = esp regs = [eax, ecx, edx, ebx, esp, ebp, esi, edi] - int_cast = tab_uintsize[s] for i in xrange(len(regs)): - c = ExprOp('+', myesp, ExprInt(int_cast(-(s/8)*(i+1)))) + c = ExprOp('+', esp, ExprInt32(-(s/8)*(i+1))) e.append(ExprAff(ExprMem(c, s), regs[i])) - e.append(ExprAff(myesp, c)) + e.append(ExprAff(esp, c)) return e def popad(info): @@ -1189,15 +1186,14 @@ def popad(info): s = 32 myesp = esp regs = [eax, ecx, edx, ebx, esp, ebp, esi, edi] - int_cast = tab_uintsize[s] regs.reverse() for i in xrange(len(regs)): if regs[i] == myesp: continue - c = ExprOp('+', esp, ExprInt(int_cast((s/8)*i))) + c = ExprOp('+', esp, ExprInt32((s/8)*i)) e.append(ExprAff(regs[i], ExprMem(c, s))) - c = ExprOp('+', myesp, ExprInt(int_cast((s/8)*(i+1)))) + c = ExprOp('+', esp, ExprInt32((s/8)*(i+1))) e.append(ExprAff(esp, c)) return e |