about summary refs log tree commit diff stats
path: root/miasm/expression/expression.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/expression/expression.py')
-rw-r--r--miasm/expression/expression.py54
1 files changed, 16 insertions, 38 deletions
diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py
index c2bf5b8b..c507f19f 100644
--- a/miasm/expression/expression.py
+++ b/miasm/expression/expression.py
@@ -38,8 +38,6 @@ from functools import cmp_to_key, total_ordering
 from future.utils import viewitems
 
 from miasm.core.utils import force_bytes, cmp_elts
-from miasm.expression.modint import mod_size2uint, is_modint, size2mask, \
-    define_uint
 from miasm.core.graph import DiGraph
 from functools import reduce
 
@@ -158,14 +156,6 @@ def is_commutative(expr):
     "Return True iff current operation is commutative"
     return (expr.op in ['+', '*', '^', '&', '|'])
 
-def is_op_segm(expr):
-    """Returns True if is ExprOp and op == 'segm'"""
-    return expr.is_op('segm')
-
-def is_mem_segm(expr):
-    """Returns True if is ExprMem and ptr is_op_segm"""
-    return expr.is_mem() and is_op_segm(expr.ptr)
-
 def canonize_to_exprloc(locdb, expr):
     """
     If expr is ExprInt, return ExprLoc with corresponding loc_key
@@ -715,11 +705,13 @@ class Expr(object):
 
     def is_op_segm(self):
         """Returns True if is ExprOp and op == 'segm'"""
-        return False
+        warnings.warn('DEPRECATION WARNING: use is_op_segm(expr)')
+        raise RuntimeError("Moved api")
 
     def is_mem_segm(self):
         """Returns True if is ExprMem and ptr is_op_segm"""
-        return False
+        warnings.warn('DEPRECATION WARNING: use is_mem_segm(expr)')
+        raise RuntimeError("Moved api")
 
     def __contains__(self, expr):
         ret = contains_visitor.contains(self, expr)
@@ -761,8 +753,8 @@ class ExprInt(Expr):
 
 
     def __init__(self, arg, size):
-        """Create an ExprInt from a modint or num/size
-        @arg: 'intable' number
+        """Create an ExprInt from num/size
+        @arg: int/long number
         @size: int size"""
         super(ExprInt, self).__init__(size)
         # Work for ._arg is done in __new__
@@ -774,21 +766,12 @@ class ExprInt(Expr):
         return self.__class__, state
 
     def __new__(cls, arg, size):
-        """Create an ExprInt from a modint or num/size
-        @arg: 'intable' number
+        """Create an ExprInt from num/size
+        @arg: int/long 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))
 
@@ -796,15 +779,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()
@@ -813,7 +789,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):
@@ -1196,7 +1172,8 @@ class ExprMem(Expr):
 
     def is_mem_segm(self):
         """Returns True if is ExprMem and ptr is_op_segm"""
-        return self._ptr.is_op_segm()
+        warnings.warn('DEPRECATION WARNING: use is_mem_segm(expr)')
+        raise RuntimeError("Moved api")
 
     def depth(self):
         return self._ptr.depth() + 1
@@ -1373,7 +1350,8 @@ class ExprOp(Expr):
 
     def is_op_segm(self):
         """Returns True if is ExprOp and op == 'segm'"""
-        return self.is_op('segm')
+        warnings.warn('DEPRECATION WARNING: use is_op_segm(expr)')
+        raise RuntimeError("Moved api")
 
 class ExprSlice(Expr):