about summary refs log tree commit diff stats
path: root/miasm/expression/expression.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-07-21 14:47:16 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-07-21 16:47:59 +0200
commit9bf0f4c1c14d318110b56df6952b0fcc2950539e (patch)
treec6f51685615aa55a71c866f0667929222499e112 /miasm/expression/expression.py
parent6ccbedd2928d52aff605ede73adbdfadb6152582 (diff)
downloadfocaccia-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.py24
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):