diff options
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) |