diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2014-09-11 13:01:36 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2014-09-11 13:01:36 +0200 |
| commit | 79f4d605ed663a95298f107ab03e7b3d56c0604e (patch) | |
| tree | 59ad4a36c1faba7fc6e0d957f4b3453f87bfd4f1 /miasm2/expression/simplifications_common.py | |
| parent | f2058cdc7aa6bdb4667805f9a83e9a38ee6a6ab5 (diff) | |
| download | miasm-79f4d605ed663a95298f107ab03e7b3d56c0604e.tar.gz miasm-79f4d605ed663a95298f107ab03e7b3d56c0604e.zip | |
expr_simpl: add shift simplification
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
| -rw-r--r-- | miasm2/expression/simplifications_common.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py index d662cf3d..4f712bf0 100644 --- a/miasm2/expression/simplifications_common.py +++ b/miasm2/expression/simplifications_common.py @@ -208,6 +208,12 @@ def simp_cst_propagation(e_s, e): args0 = args[0].args[0] args = [args0, args1] + # A >> X >> Y => A >> (X+Y) + if (op in ['<<', '>>'] and + isinstance(args[0], ExprOp) and + args[0].op == op): + args = [args[0].args[0], args[0].args[1] + args[1]] + # ((A & A.mask) if op == "&" and args[-1] == e.mask: return ExprOp('&', *args[:-1]) |