diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-10-08 23:30:01 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-10-09 08:17:50 +0200 |
| commit | a11964b49954c7bba71264b5b27e31cec01e8481 (patch) | |
| tree | 6e5ceb05924e9ab154648983df0e9b9d8f2dda64 /miasm2/expression/simplifications_common.py | |
| parent | 3cd3675165cd96c030401fbb1e6392898507a71b (diff) | |
| download | miasm-a11964b49954c7bba71264b5b27e31cec01e8481.tar.gz miasm-a11964b49954c7bba71264b5b27e31cec01e8481.zip | |
Simplifications: fix bad simplifications
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
| -rw-r--r-- | miasm2/expression/simplifications_common.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py index e7dacc91..2eeabd9b 100644 --- a/miasm2/expression/simplifications_common.py +++ b/miasm2/expression/simplifications_common.py @@ -885,6 +885,8 @@ def simp_cond_flag(expr_simp, expr): def simp_cond_int(expr_simp, expr): + # ({X, 0} == int) => X == int[:] + # X + int1 == int2 => X == int2-int1 if (expr.cond.is_op(TOK_EQUAL) and expr.cond.args[1].is_int() and expr.cond.args[0].is_compose() and @@ -903,15 +905,15 @@ def simp_cond_int(expr_simp, expr): elif (expr.cond.is_op() and expr.cond.op in [ TOK_EQUAL, - TOK_INF_SIGNED, - TOK_INF_EQUAL_SIGNED, - TOK_INF_UNSIGNED, - TOK_INF_EQUAL_UNSIGNED ] and expr.cond.args[1].is_int() and expr.cond.args[0].is_op("+") and expr.cond.args[0].args[-1].is_int()): # X + int1 == int2 => X == int2-int1 + # WARNING: + # X - 0x10 <=u 0x20 gives X in [0x10 0x30] + # which is not equivalet to A <=u 0x10 + left, right = expr.cond.args left, int_diff = left.args[:-1], left.args[-1] if len(left) == 1: |