diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-12-28 20:07:22 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-12-28 20:07:22 +0100 |
| commit | 6f3a19f40c9d941666cdba8742d4f431579d42c9 (patch) | |
| tree | 04c87810ee20653215d523468eafe818263e24c0 /miasm/expression/simplifications_common.py | |
| parent | de3d1ed055e39525803cba0c2ffdb3f65f11607e (diff) | |
| download | focaccia-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.py | 12 |
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[:] |