diff options
| author | serpilliere <devnull@localhost> | 2012-06-25 14:21:34 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2012-06-25 14:21:34 +0200 |
| commit | 408e6a88ef7ea6580fe04087bbb56a39832187a2 (patch) | |
| tree | 4727a2f719c1b7574d19eac6c8314a4219d0b9bc /miasm/expression/expression_helper.py | |
| parent | dde5d0e9323997f4b987785109568369e68bce25 (diff) | |
| download | focaccia-miasm-408e6a88ef7ea6580fe04087bbb56a39832187a2.tar.gz focaccia-miasm-408e6a88ef7ea6580fe04087bbb56a39832187a2.zip | |
modint: fix self instanciation; expr_help: sort mem; expr_simp: fix -a+a
Diffstat (limited to 'miasm/expression/expression_helper.py')
| -rw-r--r-- | miasm/expression/expression_helper.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/miasm/expression/expression_helper.py b/miasm/expression/expression_helper.py index 39f643f1..d2c239c1 100644 --- a/miasm/expression/expression_helper.py +++ b/miasm/expression/expression_helper.py @@ -218,6 +218,12 @@ def _expr_simp(e): args[i] = ExprInt(tab_size_int[args[i].get_size()](0)) del(args[j]) continue + # (- A) + A => 0 + if op == '+' and isinstance(args[i], ExprOp) and args[i].op == "-": + if len(args[i].args) == 1 and args[j] == args[i].args[0]: + args[i] = ExprInt(tab_size_int[args[i].get_size()](0)) + del(args[j]) + continue # A | A => A if op == '|' and args[i] == args[j]: del(args[j]) @@ -289,6 +295,7 @@ def _expr_simp(e): if total_bit in tab_size_int: return ExprInt(tab_size_int[total_bit]((uint64((e.arg.arg)>>e.start)) & mask)) else: + # XXX TODO fix correct size fds return ExprInt(type(e.arg.arg)((uint64((e.arg.arg)>>e.start)) & mask)) # Slice(Slice(A, x), y) => Slice(A, z) |