diff options
| author | serpilliere <serpilliere@users.noreply.github.com> | 2017-03-30 16:24:26 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-30 16:24:26 +0200 |
| commit | 7947f33a61118c35a6b24aaac29337e2739216b4 (patch) | |
| tree | 6c281f7fc4efd326fb95151173b7847026a94f05 /miasm2/expression/simplifications_common.py | |
| parent | cedf19e7d73ca8d603f2e1ed7f5306db27678e65 (diff) | |
| parent | e8916cf8cc44a0cc375af762b38798cb378b986c (diff) | |
| download | miasm-7947f33a61118c35a6b24aaac29337e2739216b4.tar.gz miasm-7947f33a61118c35a6b24aaac29337e2739216b4.zip | |
Merge pull request #509 from commial/fix/int-singleton
Fix/int singleton
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
| -rw-r--r-- | miasm2/expression/simplifications_common.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py index 503a0e77..01db7597 100644 --- a/miasm2/expression/simplifications_common.py +++ b/miasm2/expression/simplifications_common.py @@ -3,6 +3,7 @@ # ----------------------------- # +from miasm2.expression.modint import mod_size2int, mod_size2uint from miasm2.expression.expression import * from miasm2.expression.expression_helper import * @@ -103,7 +104,7 @@ def simp_cst_propagation(e_s, e): # -(int) => -int if op == '-' and len(args) == 1 and args[0].is_int(): - return ExprInt(-args[0].arg) + return ExprInt(-int(args[0]), e.size) # A op 0 =>A if op in ['+', '|', "^", "<<", ">>", "<<<", ">>>"] and len(args) > 1: if args[-1].is_int(0): @@ -237,7 +238,7 @@ def simp_cst_propagation(e_s, e): # parity(int) => int if op == 'parity' and args[0].is_int(): - return ExprInt1(parity(args[0].arg)) + return ExprInt(parity(int(args[0])), 1) # (-a) * b * (-c) * (-d) => (-a) * b * c * d if op == "*" and len(args) > 1: @@ -580,8 +581,8 @@ def simp_cond(e_s, e): # eval exprcond src1/src2 with satifiable/unsatisfiable condition # propagation if (not e.cond.is_int()) and e.cond.size == 1: - src1 = e.src1.replace_expr({e.cond: ExprInt1(1)}) - src2 = e.src2.replace_expr({e.cond: ExprInt1(0)}) + src1 = e.src1.replace_expr({e.cond: ExprInt(1, 1)}) + src2 = e.src2.replace_expr({e.cond: ExprInt(0, 1)}) if src1 != e.src1 or src2 != e.src2: return ExprCond(e.cond, src1, src2) |