diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-07-21 14:47:16 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2020-07-21 16:47:59 +0200 |
| commit | 9bf0f4c1c14d318110b56df6952b0fcc2950539e (patch) | |
| tree | c6f51685615aa55a71c866f0667929222499e112 /miasm/expression/expression.py | |
| parent | 6ccbedd2928d52aff605ede73adbdfadb6152582 (diff) | |
| download | focaccia-miasm-9bf0f4c1c14d318110b56df6952b0fcc2950539e.tar.gz focaccia-miasm-9bf0f4c1c14d318110b56df6952b0fcc2950539e.zip | |
ExprInt only takes int
Diffstat (limited to 'miasm/expression/expression.py')
| -rw-r--r-- | miasm/expression/expression.py | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py index b0f54992..1534bd3f 100644 --- a/miasm/expression/expression.py +++ b/miasm/expression/expression.py @@ -772,17 +772,8 @@ class ExprInt(Expr): @arg: 'intable' number @size: int size""" - if is_modint(arg): - assert size == arg.size - # Avoid a common blunder - assert not isinstance(arg, ExprInt) - - # Ensure arg is always a moduint - arg = int(arg) - if size not in mod_size2uint: - define_uint(size) - arg = mod_size2uint[size](arg) - + assert isinstance(arg, int_types) + arg = arg & ((1 << size) - 1) # Get the Singleton instance expr = Expr.get_object(cls, (arg, size)) @@ -790,15 +781,8 @@ class ExprInt(Expr): expr._arg = arg return expr - def _get_int(self): - "Return self integer representation" - return int(self._arg & size2mask(self._size)) - def __str__(self): - if self._arg < 0: - return str("-0x%X" % (- self._get_int())) - else: - return str("0x%X" % self._get_int()) + return str("0x%X" % self.arg) def get_w(self): return set() @@ -807,7 +791,7 @@ class ExprInt(Expr): return hash((EXPRINT, self._arg, self._size)) def _exprrepr(self): - return "%s(0x%X, %d)" % (self.__class__.__name__, self._get_int(), + return "%s(0x%X, %d)" % (self.__class__.__name__, self.arg, self._size) def copy(self): |