about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <devnull@localhost>2012-06-13 14:03:30 +0200
committerserpilliere <devnull@localhost>2012-06-13 14:03:30 +0200
commit6371cf573aae62ea88aafb9d578fe3ee8cdab441 (patch)
treec4eb584b394ca338ff5ca2f0df2d50bbe4ba1cc3
parent303600c1c80022a45743ae43ca00198150176439 (diff)
downloadmiasm-6371cf573aae62ea88aafb9d578fe3ee8cdab441.tar.gz
miasm-6371cf573aae62ea88aafb9d578fe3ee8cdab441.zip
expression_eval: simplify expression during evaluation; fix eval_op -
-rw-r--r--miasm/expression/expression_eval_abstract.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/miasm/expression/expression_eval_abstract.py b/miasm/expression/expression_eval_abstract.py
index 39a41114..153208d2 100644
--- a/miasm/expression/expression_eval_abstract.py
+++ b/miasm/expression/expression_eval_abstract.py
@@ -316,6 +316,7 @@ class eval_abs:
             return e
         if e.is_eval:
             return e
+        e = e.visit(expr_simp)
         ret = self.eval_expr_no_cache(e, eval_cache)
         ret.is_eval = True
         return ret
@@ -327,7 +328,12 @@ class eval_abs:
         return ret_value
 
     def eval_op_minus(self, args, op_size, cast_int):
-        ret_value = args[0] - args[1]
+        if len(args) == 2:
+            ret_value = args[0] - args[1]
+        elif len(args) == 1:
+            ret_value = -args[0]
+        else:
+            raise ValueError('deprecated n aire arguments for op -')
         return ret_value
 
     def eval_op_mult(self, args, op_size, cast_int):