about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/arch/x86/sem.py86
1 files changed, 64 insertions, 22 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index 6b5ae583..7f174e82 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -1212,7 +1212,9 @@ def jz(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(zf, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(zf,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e = [m2_expr.ExprAff(meip, dst_o),
          m2_expr.ExprAff(ir.IRDst, dst_o),
      ]
@@ -1224,7 +1226,8 @@ def jcxz(ir, instr, dst):
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
     dst_o = m2_expr.ExprCond(mRCX[instr.mode][:16],
-                             n, dst).zeroExtend(instr.mode)
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1235,7 +1238,8 @@ def jecxz(ir, instr, dst):
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
     dst_o = m2_expr.ExprCond(mRCX[instr.mode][:32],
-                             n, dst).zeroExtend(instr.mode)
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1245,7 +1249,9 @@ def jrcxz(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(mRCX[instr.mode], n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(mRCX[instr.mode],
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1255,7 +1261,9 @@ def jnz(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(zf, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(zf,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1265,7 +1273,9 @@ def jp(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(pf, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(pf,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1275,7 +1285,9 @@ def jnp(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(pf, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(pf,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1285,7 +1297,9 @@ def ja(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(cf | zf, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(cf | zf,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1295,7 +1309,9 @@ def jae(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(cf, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(cf,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1305,7 +1321,9 @@ def jb(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(cf, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(cf,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1315,7 +1333,9 @@ def jbe(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(cf | zf, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(cf | zf,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1325,7 +1345,9 @@ def jge(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(nf - of, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(nf - of,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1335,7 +1357,9 @@ def jg(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(zf | (nf - of), n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(zf | (nf - of),
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1345,7 +1369,9 @@ def jl(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(nf - of, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(nf - of,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1355,7 +1381,9 @@ def jle(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(zf | (nf - of), dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(zf | (nf - of),
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1365,7 +1393,9 @@ def js(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(nf, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(nf,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1375,7 +1405,9 @@ def jns(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(nf, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(nf,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1385,7 +1417,9 @@ def jo(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(of, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(of,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1395,7 +1429,9 @@ def jno(ir, instr, dst):
     e = []
     meip = mRIP[instr.mode]
     n = m2_expr.ExprId(ir.get_next_label(instr), dst.size)
-    dst_o = m2_expr.ExprCond(of, n, dst).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(of,
+                             n.zeroExtend(instr.mode),
+                             dst.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1410,7 +1446,9 @@ def loop(ir, instr, dst):
 
     n = m2_expr.ExprId(ir.get_next_label(instr), instr.mode)
     c = myecx - m2_expr.ExprInt_from(myecx, 1)
-    dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(c,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(myecx, c))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
@@ -1432,7 +1470,9 @@ def loopne(ir, instr, dst):
     c &= zf ^ m2_expr.ExprInt1(1)
 
     e.append(m2_expr.ExprAff(myecx, myecx - m2_expr.ExprInt_from(myecx, 1)))
-    dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(c,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []
@@ -1451,7 +1491,9 @@ def loope(ir, instr, dst):
                  m2_expr.ExprInt1(0))
     c &= zf
     e.append(m2_expr.ExprAff(myecx, myecx - m2_expr.ExprInt_from(myecx, 1)))
-    dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode)
+    dst_o = m2_expr.ExprCond(c,
+                             dst.zeroExtend(instr.mode),
+                             n.zeroExtend(instr.mode))
     e.append(m2_expr.ExprAff(meip, dst_o))
     e.append(m2_expr.ExprAff(ir.IRDst, dst_o))
     return e, []