diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-08-04 16:15:54 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-08-06 16:03:48 +0200 |
| commit | 17cccfe652b70eb09f239bbdef6db3a0bf35fe93 (patch) | |
| tree | 6329c3f1ba052a9c20dca498cc99357fae780b57 /miasm2/expression/simplifications.py | |
| parent | 11c0be1c8ee4ad5ad5c92ccddcb5842cbd2f0b31 (diff) | |
| download | miasm-17cccfe652b70eb09f239bbdef6db3a0bf35fe93.tar.gz miasm-17cccfe652b70eb09f239bbdef6db3a0bf35fe93.zip | |
Simplifications: add high level to low level reduction
Diffstat (limited to 'miasm2/expression/simplifications.py')
| -rw-r--r-- | miasm2/expression/simplifications.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/miasm2/expression/simplifications.py b/miasm2/expression/simplifications.py index e6c5dc54..3f7b9db9 100644 --- a/miasm2/expression/simplifications.py +++ b/miasm2/expression/simplifications.py @@ -6,6 +6,7 @@ import logging from miasm2.expression import simplifications_common from miasm2.expression import simplifications_cond +from miasm2.expression import simplifications_explicit from miasm2.expression.expression_helper import fast_unify import miasm2.expression.expression as m2_expr @@ -55,6 +56,16 @@ class ExpressionSimplifier(object): } + # Available passes lists are: + # - highlevel: transform high level operators to explicit computations + PASS_HIGH_TO_EXPLICIT = { + m2_expr.ExprOp: [ + simplifications_explicit.simp_flags, + simplifications_explicit.simp_ext, + ], + } + + def __init__(self): self.expr_simp_cb = {} self.simplified_exprs = set() @@ -136,3 +147,12 @@ class ExpressionSimplifier(object): # Public ExprSimplificationPass instance with commons passes expr_simp = ExpressionSimplifier() expr_simp.enable_passes(ExpressionSimplifier.PASS_COMMONS) + + + +expr_simp_high_to_explicit = ExpressionSimplifier() +expr_simp_high_to_explicit.enable_passes(ExpressionSimplifier.PASS_HIGH_TO_EXPLICIT) + +expr_simp_explicit = ExpressionSimplifier() +expr_simp_explicit.enable_passes(ExpressionSimplifier.PASS_COMMONS) +expr_simp_explicit.enable_passes(ExpressionSimplifier.PASS_HIGH_TO_EXPLICIT) |