diff options
| author | Ajax <commial@gmail.com> | 2015-11-13 16:24:50 +0100 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2015-11-13 16:24:50 +0100 |
| commit | 1fb09685622caeb20af42b09929857190a8d32a2 (patch) | |
| tree | 4ac57986084d8bb16ceb28208d508422b707bf55 | |
| parent | 82dfd90cb3f25b60329805c8d2e19216e1159514 (diff) | |
| download | miasm-1fb09685622caeb20af42b09929857190a8d32a2.tar.gz miasm-1fb09685622caeb20af42b09929857190a8d32a2.zip | |
x86/sem: LOOP* should use opmode instead of admode
| -rw-r--r-- | miasm2/arch/x86/sem.py | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index b2097e58..a5bdb46d 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -1345,8 +1345,7 @@ def jno(ir, instr, dst): def loop(ir, instr, dst): e = [] meip = mRIP[instr.mode] - s = instr.v_opmode() - opmode, admode = s, instr.v_admode() + admode = instr.v_admode() myecx = mRCX[instr.mode][:admode] n = m2_expr.ExprId(ir.get_next_label(instr), instr.mode) @@ -1363,13 +1362,12 @@ def loop(ir, instr, dst): def loopne(ir, instr, dst): e = [] meip = mRIP[instr.mode] - s = instr.v_opmode() - opmode, admode = s, instr.v_admode() + admode = instr.v_admode() myecx = mRCX[instr.mode][:admode] n = m2_expr.ExprId(ir.get_next_label(instr), instr.mode) - c = m2_expr.ExprCond(mRCX[instr.mode][:s] - m2_expr.ExprInt(1, s), + c = m2_expr.ExprCond(myecx - m2_expr.ExprInt(1, size=myecx.size), m2_expr.ExprInt1(1), m2_expr.ExprInt1(0)) c &= zf ^ m2_expr.ExprInt1(1) @@ -1386,12 +1384,11 @@ def loopne(ir, instr, dst): def loope(ir, instr, dst): e = [] meip = mRIP[instr.mode] - s = instr.v_opmode() - opmode, admode = s, instr.v_admode() + admode = instr.v_admode() myecx = mRCX[instr.mode][:admode] n = m2_expr.ExprId(ir.get_next_label(instr), instr.mode) - c = m2_expr.ExprCond(mRCX[instr.mode][:s] - m2_expr.ExprInt(1, s), + c = m2_expr.ExprCond(myecx - m2_expr.ExprInt(1, size=myecx.size), m2_expr.ExprInt1(1), m2_expr.ExprInt1(0)) c &= zf |