about summary refs log tree commit diff stats
path: root/miasm/expression/simplifications_common.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-12-28 20:07:22 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-12-28 20:07:22 +0100
commit6f3a19f40c9d941666cdba8742d4f431579d42c9 (patch)
tree04c87810ee20653215d523468eafe818263e24c0 /miasm/expression/simplifications_common.py
parentde3d1ed055e39525803cba0c2ffdb3f65f11607e (diff)
downloadfocaccia-miasm-6f3a19f40c9d941666cdba8742d4f431579d42c9.tar.gz
focaccia-miasm-6f3a19f40c9d941666cdba8742d4f431579d42c9.zip
Add simplification
The simplification added in ce175bb51 may take reduction before
simp_cc_conds. This add simplifications for remaining case.
Diffstat (limited to 'miasm/expression/simplifications_common.py')
-rw-r--r--miasm/expression/simplifications_common.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/miasm/expression/simplifications_common.py b/miasm/expression/simplifications_common.py
index af409286..2ceb507c 100644
--- a/miasm/expression/simplifications_common.py
+++ b/miasm/expression/simplifications_common.py
@@ -965,6 +965,18 @@ def simp_cond_cc_flag(expr_simp, expr):
         return ExprCond(arg, expr.src2, expr.src1)
     return expr
 
+def simp_cond_sub_cf(expr_simp, expr):
+    """
+    ExprCond(FLAG_SUB_CF(A, B), X, Y) => ExprCond(A <u B, X, Y)
+    """
+    if not expr.is_cond():
+        return expr
+    if not expr.cond.is_op("FLAG_SUB_CF"):
+        return expr
+    cond = ExprOp(TOK_INF_UNSIGNED, *expr.cond.args)
+    return ExprCond(cond, expr.src1, expr.src2)
+
+
 def simp_cmp_int(expr_simp, expr):
     """
     ({X, 0} == int) => X == int[:]