diff options
Diffstat (limited to 'miasm2/expression/simplifications_cond.py')
| -rw-r--r-- | miasm2/expression/simplifications_cond.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/miasm2/expression/simplifications_cond.py b/miasm2/expression/simplifications_cond.py index 93f28162..8f41975b 100644 --- a/miasm2/expression/simplifications_cond.py +++ b/miasm2/expression/simplifications_cond.py @@ -34,6 +34,25 @@ jok1 = m2_expr.ExprId("jok1") jok2 = m2_expr.ExprId("jok2") jok3 = m2_expr.ExprId("jok3") +# Constructors + +def __ExprOp_cond(op, arg1, arg2): + "Return an ExprOp standing for arg1 op arg2 with size to 1" + ec = m2_expr.ExprOp(op, arg1, arg2) + ec._size = 1 + return ec + + +def ExprOp_inf_signed(arg1, arg2): + "Return an ExprOp standing for arg1 <s arg2" + return __ExprOp_cond(TOK_INF_SIGNED, arg1, arg2) + + +def ExprOp_inf_unsigned(arg1, arg2): + "Return an ExprOp standing for arg1 <s arg2" + return __ExprOp_cond(TOK_INF_UNSIGNED, arg1, arg2) + + # Catching conditions forms def __check_msb(e): @@ -83,7 +102,7 @@ def expr_simp_inf_signed(expr_simp, e): sub = expr_simp(r[jok1] - r[jok2]) if new_j3 == sub: - return m2_expr.ExprOp(TOK_INF_SIGNED, r[jok1], r[jok2]) + return ExprOp_inf_signed(r[jok1], r[jok2]) else: return e @@ -107,7 +126,7 @@ def expr_simp_inf_unsigned_inversed(expr_simp, e): sub = expr_simp(r[jok1] - r[jok2]) if new_j3 == sub: - return m2_expr.ExprOp(TOK_INF_UNSIGNED, r[jok1], r[jok2]) + return ExprOp_inf_unsigned(r[jok1], r[jok2]) else: return e |