about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2018-08-04 16:15:54 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2018-08-06 16:03:48 +0200
commit17cccfe652b70eb09f239bbdef6db3a0bf35fe93 (patch)
tree6329c3f1ba052a9c20dca498cc99357fae780b57 /miasm2/expression/simplifications.py
parent11c0be1c8ee4ad5ad5c92ccddcb5842cbd2f0b31 (diff)
downloadmiasm-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.py20
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)