diff options
| author | Ajax <commial@gmail.com> | 2017-04-20 12:57:21 +0200 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2017-04-20 13:02:01 +0200 |
| commit | 546f94dd9819907c80a488c1042fc3fbdcf0acd4 (patch) | |
| tree | 4b72563b80ff607dfe854b6b25fa6433c80cb5bb /miasm2/ir/ir.py | |
| parent | 00d100be01d666096f407c502b256d555acc8f04 (diff) | |
| download | miasm-546f94dd9819907c80a488c1042fc3fbdcf0acd4.tar.gz miasm-546f94dd9819907c80a488c1042fc3fbdcf0acd4.zip | |
AssignBlock: add simplification facility
Diffstat (limited to '')
| -rw-r--r-- | miasm2/ir/ir.py | 12 |
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. |