diff options
| -rw-r--r-- | miasm2/expression/expression.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index cedb3e5c..581dc8dc 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -1068,7 +1068,7 @@ class ExprCompose(Expr): return self.__args def __setstate__(self, state): - self.__init__(state) + self.__init__(*state) def __new__(cls, *args): is_new_style = args and isinstance(args[0], Expr) @@ -1078,7 +1078,7 @@ class ExprCompose(Expr): return Expr.get_object(cls, tuple(args)) def __str__(self): - return '{' + ', '.join([str(arg) for arg in self.__args]) + '}' + return '{' + ', '.join(["%s %s %s" % (arg, idx, idx + arg.size) for idx, arg in self.iter_args()]) + '}' def get_r(self, mem_read=False, cst_read=False): return reduce(lambda elements, arg: @@ -1093,7 +1093,7 @@ class ExprCompose(Expr): return hash(tuple(h_args)) def _exprrepr(self): - return "%s([%r])" % (self.__class__.__name__, self.__args) + return "%s%r" % (self.__class__.__name__, self.__args) def __contains__(self, e): if self == e: @@ -1189,6 +1189,9 @@ def compare_exprs(e1, e2): if e1 == e2: return 0 if c1 == ExprInt: + ret = cmp(e1.size, e2.size) + if ret != 0: + return ret return cmp(e1.arg, e2.arg) elif c1 == ExprId: x = cmp(e1.name, e2.name) |