about summary refs log tree commit diff stats
path: root/miasm2/ir/ir.py
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2017-04-20 12:57:21 +0200
committerAjax <commial@gmail.com>2017-04-20 13:02:01 +0200
commit546f94dd9819907c80a488c1042fc3fbdcf0acd4 (patch)
tree4b72563b80ff607dfe854b6b25fa6433c80cb5bb /miasm2/ir/ir.py
parent00d100be01d666096f407c502b256d555acc8f04 (diff)
downloadmiasm-546f94dd9819907c80a488c1042fc3fbdcf0acd4.tar.gz
miasm-546f94dd9819907c80a488c1042fc3fbdcf0acd4.zip
AssignBlock: add simplification facility
Diffstat (limited to '')
-rw-r--r--miasm2/ir/ir.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/miasm2/ir/ir.py b/miasm2/ir/ir.py
index aeb6cbbe..caf2c0ed 100644
--- a/miasm2/ir/ir.py
+++ b/miasm2/ir/ir.py
@@ -227,6 +227,18 @@ class AssignBlock(object):
         @dst: Expr instance"""
         return m2_expr.ExprAff(dst, self[dst])
 
+    def simplify(self, simplifier):
+        """Return a new AssignBlock with expression simplified
+        @simplifier: ExpressionSimplifier instance"""
+        new_assignblk = {}
+        for dst, src in self.iteritems():
+            if dst == src:
+                continue
+            src = simplifier(src)
+            dst = simplifier(dst)
+            new_assignblk[dst] = src
+        return AssignBlock(irs=new_assignblk, instr=self.instr)
+
 
 class IRBlock(object):
     """Intermediate representation block object.