about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/analysis/disasm_cb.py6
-rw-r--r--miasm2/arch/aarch64/arch.py28
-rw-r--r--miasm2/arch/aarch64/sem.py14
-rw-r--r--miasm2/arch/arm/arch.py38
-rw-r--r--miasm2/arch/arm/sem.py8
-rw-r--r--miasm2/arch/mips32/arch.py6
-rw-r--r--miasm2/arch/mips32/sem.py8
-rw-r--r--miasm2/arch/msp430/arch.py12
-rw-r--r--miasm2/arch/sh4/arch.py12
-rw-r--r--miasm2/arch/x86/arch.py40
-rw-r--r--miasm2/arch/x86/sem.py14
-rw-r--r--miasm2/core/cpu.py6
-rw-r--r--miasm2/expression/expression_helper.py8
-rw-r--r--miasm2/expression/simplifications_common.py18
-rw-r--r--miasm2/expression/simplifications_cond.py8
-rw-r--r--miasm2/expression/stp.py2
-rw-r--r--miasm2/ir/ir.py4
-rw-r--r--miasm2/ir/symbexec.py2
-rw-r--r--miasm2/ir/translators/miasm.py2
-rw-r--r--miasm2/jitter/codegen.py2
-rw-r--r--miasm2/jitter/emulatedsymbexec.py2
-rw-r--r--miasm2/jitter/llvmconvert.py4
-rw-r--r--test/analysis/depgraph.py2
23 files changed, 123 insertions, 123 deletions
diff --git a/miasm2/analysis/disasm_cb.py b/miasm2/analysis/disasm_cb.py
index bf1db108..b6c4351d 100644
--- a/miasm2/analysis/disasm_cb.py
+++ b/miasm2/analysis/disasm_cb.py
@@ -55,11 +55,11 @@ def arm_guess_subcall(
         if lr_val.arg != l.offset + l.l:
             continue
         # print 'IS CALL!'
-        l = symbol_pool.getby_offset_create(int(lr_val.arg))
+        l = symbol_pool.getby_offset_create(int(lr_val))
         c = asm_constraint_next(l)
 
         to_add.add(c)
-        offsets_to_dis.add(int(lr_val.arg))
+        offsets_to_dis.add(int(lr_val))
 
     # if to_add:
     #    print 'R'*70
@@ -106,7 +106,7 @@ def arm_guess_jump_table(
         print res
         if not isinstance(res[jrb], ExprInt):
             raise NotImplementedError('not fully functional')
-        base_ad = int(res[jrb].arg)
+        base_ad = int(res[jrb])
         print base_ad
         addrs = set()
         i = -1
diff --git a/miasm2/arch/aarch64/arch.py b/miasm2/arch/aarch64/arch.py
index 00f3509d..96945ff2 100644
--- a/miasm2/arch/aarch64/arch.py
+++ b/miasm2/arch/aarch64/arch.py
@@ -807,11 +807,11 @@ def set_imm_to_size(size, expr):
     if size == expr.size:
         return expr
     if size > expr.size:
-        expr = m2_expr.ExprInt(int(expr.arg), size)
+        expr = m2_expr.ExprInt(int(expr), size)
     else:
         if expr.arg > (1 << size) - 1:
             return None
-        expr = m2_expr.ExprInt(int(expr.arg), size)
+        expr = m2_expr.ExprInt(int(expr), size)
     return expr
 
 
@@ -838,7 +838,7 @@ class aarch64_imm_sf(imm_noarg):
             return False
         if not test_set_sf(self.parent, self.expr.size):
             return False
-        value = int(self.expr.arg)
+        value = int(self.expr)
         if value >= 1 << self.l:
             return False
         self.value = value
@@ -857,7 +857,7 @@ class aarch64_imm_sft(aarch64_imm_sf, m_arg):
             return False
         if not test_set_sf(self.parent, self.expr.size):
             return False
-        value = int(self.expr.arg)
+        value = int(self.expr)
         if value < 1 << self.l:
             self.parent.shift.value = 0
         else:
@@ -902,7 +902,7 @@ class aarch64_gpreg_ext(reg_noarg, m_arg):
             if not test_set_sf(self.parent, self.expr.size):
                 return False
         self.parent.option.value = option
-        self.parent.imm.value = int(amount.arg)
+        self.parent.imm.value = int(amount)
         return True
 
     def decode(self, v):
@@ -1037,7 +1037,7 @@ class aarch64_gpreg_sftimm(reg_noarg, m_arg):
         if not isinstance(args[1], m2_expr.ExprInt):
             return False
         self.parent.shift.value = shift_expr.index(self.expr.op)
-        self.parent.imm.value = int(args[1].arg)
+        self.parent.imm.value = int(args[1])
         self.value = self.reg_info[size].expr.index(args[0])
         return True
 
@@ -1120,7 +1120,7 @@ class aarch64_immhip_page(aarch64_imm_32):
         return True
 
     def encode(self):
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v & (1 << 63):
             v &= (1 << 33) - 1
         if v & 0xfff:
@@ -1142,7 +1142,7 @@ class aarch64_immhi_page(aarch64_imm_32):
         return True
 
     def encode(self):
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v & (1 << 63):
             v &= (1 << 33) - 1
         self.parent.immlo.value = v & 3
@@ -1168,7 +1168,7 @@ class aarch64_imm_hw(m_arg):
         size = self.parent.args[0].expr.size
         if set_imm_to_size(size, self.expr) is None:
             return False
-        value = int(self.expr.arg)
+        value = int(self.expr)
         mask = (1 << size) - 1
         for i in xrange(size / 16):
             if ((0xffff << (i * 16)) ^ mask) & value:
@@ -1197,7 +1197,7 @@ class aarch64_imm_hw_sc(m_arg):
         if isinstance(self.expr, m2_expr.ExprInt):
             if self.expr.arg > 0xFFFF:
                 return False
-            self.value = int(self.expr.arg)
+            self.value = int(self.expr)
             self.parent.hw.value = 0
             return True
 
@@ -1211,7 +1211,7 @@ class aarch64_imm_hw_sc(m_arg):
             return False
         if set_imm_to_size(self.parent.args[0].expr.size, self.expr.args[1]) is None:
             return False
-        arg, amount = [int(arg.arg) for arg in self.expr.args]
+        arg, amount = [int(arg) for arg in self.expr.args]
         if arg > 0xFFFF:
             return False
         if amount % 16 or amount / 16 > 4:
@@ -1234,7 +1234,7 @@ class aarch64_offs(imm_noarg, m_arg):
     def encode(self):
         if not isinstance(self.expr, m2_expr.ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v & (1 << 63):
             v &= (1 << (self.l + 2)) - 1
         self.value = v >> 2
@@ -1310,7 +1310,7 @@ class aarch64_deref(m_arg):
             return False
         if not isinstance(off, m2_expr.ExprInt):
             return False
-        imm = int(off.arg)
+        imm = int(off)
         imm = self.encode_w_size(imm)
         if imm is False:
             return False
@@ -1425,7 +1425,7 @@ class aarch64_b40(m_arg):
         if not isinstance(self.expr, m2_expr.ExprInt):
             return False
         size = self.parent.args[0].expr.size
-        value = int(self.expr.arg)
+        value = int(self.expr)
         self.value = value & self.lmask
         if self.parent.sf.value is None:
             self.parent.sf.value = value >> self.l
diff --git a/miasm2/arch/aarch64/sem.py b/miasm2/arch/aarch64/sem.py
index 02a93dd2..aff2d8ca 100644
--- a/miasm2/arch/aarch64/sem.py
+++ b/miasm2/arch/aarch64/sem.py
@@ -275,11 +275,11 @@ def movk(ir, instr, arg1, arg2):
         assert(arg2.op == 'slice_at' and
                isinstance(arg2.args[0], m2_expr.ExprInt) and
                isinstance(arg2.args[1], m2_expr.ExprInt))
-        value, shift = int(arg2.args[0].arg), int(arg2.args[1].arg)
+        value, shift = int(arg2.args[0].arg), int(arg2.args[1])
         e.append(
             m2_expr.ExprAff(arg1[shift:shift + 16], m2_expr.ExprInt16(value)))
     else:
-        e.append(m2_expr.ExprAff(arg1[:16], m2_expr.ExprInt16(int(arg2.arg))))
+        e.append(m2_expr.ExprAff(arg1[:16], m2_expr.ExprInt16(int(arg2))))
 
     return e, []
 
@@ -368,7 +368,7 @@ def get_mem_access(mem):
                 off = reg.zeroExtend(base.size) << shift.zeroExtend(base.size)
                 addr = base + off
             elif op == 'LSL':
-                if isinstance(shift, m2_expr.ExprInt) and int(shift.arg) == 0:
+                if isinstance(shift, m2_expr.ExprInt) and int(shift) == 0:
                     addr = base + reg.zeroExtend(base.size)
                 else:
                     addr = base + \
@@ -481,7 +481,7 @@ def ldrsw(ir, instr, arg1, arg2):
 
 def sbfm(ir, instr, arg1, arg2, arg3, arg4):
     e = []
-    rim, sim = int(arg3.arg), int(arg4.arg) + 1
+    rim, sim = int(arg3.arg), int(arg4) + 1
     if sim > rim:
         res = arg2[rim:sim].signExtend(arg1.size)
     else:
@@ -493,7 +493,7 @@ def sbfm(ir, instr, arg1, arg2, arg3, arg4):
 
 def ubfm(ir, instr, arg1, arg2, arg3, arg4):
     e = []
-    rim, sim = int(arg3.arg), int(arg4.arg) + 1
+    rim, sim = int(arg3.arg), int(arg4) + 1
     if sim > rim:
         res = arg2[rim:sim].zeroExtend(arg1.size)
     else:
@@ -504,7 +504,7 @@ def ubfm(ir, instr, arg1, arg2, arg3, arg4):
 
 def bfm(ir, instr, arg1, arg2, arg3, arg4):
     e = []
-    rim, sim = int(arg3.arg), int(arg4.arg) + 1
+    rim, sim = int(arg3.arg), int(arg4) + 1
     if sim > rim:
         res = arg2[rim:sim]
         e.append(m2_expr.ExprAff(arg1[:sim-rim], res))
@@ -674,7 +674,7 @@ def nop():
 def extr(arg1, arg2, arg3, arg4):
     compose = m2_expr.ExprCompose([(arg2, 0, arg2.size),
                                    (arg3, arg2.size, arg2.size+arg3.size)])
-    arg1 = compose[int(arg4.arg):int(arg4.arg)+arg1.size]
+    arg1 = compose[int(arg4.arg):int(arg4)+arg1.size]
 
 mnemo_func = sbuild.functions
 mnemo_func.update({
diff --git a/miasm2/arch/arm/arch.py b/miasm2/arch/arm/arch.py
index 9906c94e..e0ead4f4 100644
--- a/miasm2/arch/arm/arch.py
+++ b/miasm2/arch/arm/arch.py
@@ -836,7 +836,7 @@ class arm_offs(arm_imm):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if (1 << (self.l - 1)) & v:
             v = -((0xffffffff ^ v) + 1)
         v = self.encodeval(v)
@@ -888,7 +888,7 @@ class arm_imm8_12(m_arg):
         if not isinstance(e, ExprInt):
             log.debug('should be int %r', e)
             return False
-        v = int(e.arg)
+        v = int(e)
         if v < 0 or v & (1 << 31):
             self.parent.updown.value = 0
             v = -v & 0xFFFFFFFF
@@ -912,7 +912,7 @@ class arm_imm_4_12(m_arg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v > 0xffff:
             return False
         self.parent.imm4.value = v >> 12
@@ -932,7 +932,7 @@ class arm_imm_12_4(m_arg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v > 0xffff:
             return False
         self.parent.imm.value = (v >> 4) & 0xfff
@@ -995,7 +995,7 @@ class arm_op2(m_arg):
         e = self.expr
         # pure imm
         if isinstance(e, ExprInt):
-            val = self.str_to_imm_rot_form(int(e.arg))
+            val = self.str_to_imm_rot_form(int(e))
             if val is None:
                 return False
             self.parent.immop.value = 1
@@ -1024,7 +1024,7 @@ class arm_op2(m_arg):
             shift_type = 3
         elif isinstance(e.args[1], ExprInt):
             shift_kind = 0
-            amount = int(e.args[1].arg)
+            amount = int(e.args[1])
             # LSR/ASR of 32 => 0
             if amount == 32 and e.op in ['>>', 'a>>']:
                 amount = 0
@@ -1120,9 +1120,9 @@ class arm_op2imm(arm_imm8_12):
         # pure imm
         if isinstance(e.args[1], ExprInt):
             self.parent.immop.value = 0
-            val = self.str_to_imm_rot_form(int(e.args[1].arg))
+            val = self.str_to_imm_rot_form(int(e.args[1]))
             if val is None:
-                val = self.str_to_imm_rot_form(int(e.args[1].arg), True)
+                val = self.str_to_imm_rot_form(int(e.args[1]), True)
                 if val is None:
                     log.debug('cannot encode inm')
                     return False
@@ -1147,7 +1147,7 @@ class arm_op2imm(arm_imm8_12):
         shift_type = allshifts.index(e.op)
         if isinstance(e.args[1], ExprInt):
             shift_kind = 0
-            amount = int(e.args[1].arg)
+            amount = int(e.args[1])
         else:
             shift_kind = 1
             amount = gpregs.expr.index(e.args[1]) << 1
@@ -1406,7 +1406,7 @@ class arm_immed(m_arg):
             return True
         e = e.args[1]
         if isinstance(e, ExprInt):
-            v = int(e.arg)
+            v = int(e)
             if v < 0 or v & (1 << 31):
                 self.parent.updown.value = 0
                 v = (-v) & 0xFFFFFFFF
@@ -1487,7 +1487,7 @@ class arm_mem_rn_imm(m_arg):
             self.value = gpregs.expr.index(reg)
             if not isinstance(imm, ExprInt):
                 return False
-            value = int(imm.arg)
+            value = int(imm)
             if value & 0x80000000:
                 value = -value
                 self.parent.add_imm.value = 0
@@ -1634,7 +1634,7 @@ class arm_widthm1(arm_imm, m_arg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg) +  -1
+        v = int(self.expr) +  -1
         self.value = v
         return True
 
@@ -1660,7 +1660,7 @@ class arm_rm_rot2(m_arg):
             self.value = gpregs.expr.index(reg)
             if not isinstance(value, ExprInt):
                 return False
-            value = int(value.arg)
+            value = int(value)
             if not value in [8, 16, 24]:
                 return False
             self.parent.rot2.value = value / 8
@@ -1739,7 +1739,7 @@ class arm_offreg(m_arg):
         if e.args[0] != self.off_reg:
             log.debug('cannot encode reg %r', e.args[0])
             return False
-        v = int(e.args[1].arg)
+        v = int(e.args[1])
         v = self.encodeval(v)
         self.value = v
         return True
@@ -1773,7 +1773,7 @@ class arm_offpc(arm_offreg):
         if e.args[0] != self.off_reg:
             log.debug('cannot encode reg %r', e.args[0])
             return False
-        v = int(e.args[1].arg)
+        v = int(e.args[1])
         v >>= 2
         self.value = v
         return True
@@ -1865,7 +1865,7 @@ class arm_offbw(imm_noarg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if self.parent.trb.value == 0:
             if v & 3:
                 log.debug('off must be aligned %r', v)
@@ -1886,7 +1886,7 @@ class arm_offh(imm_noarg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if v & 1:
             log.debug('off must be aligned %r', v)
             return False
@@ -2197,7 +2197,7 @@ class armt_gpreg_rm_shift_off(arm_reg):
         shift = e.op
         r = gpregs_nosppc.expr.index(e.args[0])
         self.value = r
-        i = int(e.args[1].arg)
+        i = int(e.args[1])
         if shift == 'rrx':
             if i != 1:
                 log.debug('rrx shift must be 1')
@@ -2248,7 +2248,7 @@ class armt2_imm12(arm_imm):
         return True
 
     def encode(self):
-        v = int(self.expr.arg)
+        v = int(self.expr)
         value = None
         # simple encoding
         if 0 <= v < 0x100:
diff --git a/miasm2/arch/arm/sem.py b/miasm2/arch/arm/sem.py
index 1b7ad47f..260531ac 100644
--- a/miasm2/arch/arm/sem.py
+++ b/miasm2/arch/arm/sem.py
@@ -893,8 +893,8 @@ def sxth(ir, instr, a, b):
 
 def ubfx(ir, instr, a, b, c, d):
     e = []
-    c = int(c.arg)
-    d = int(d.arg)
+    c = int(c)
+    d = int(d)
     r = b[c:c+d].zeroExtend(32)
     e.append(ExprAff(a, r))
     dst = None
@@ -905,8 +905,8 @@ def ubfx(ir, instr, a, b, c, d):
 
 def bfc(ir, instr, a, b, c):
     e = []
-    start = int(b.arg)
-    stop = start + int(c.arg)
+    start = int(b)
+    stop = start + int(c)
     out = []
     last = 0
     if start:
diff --git a/miasm2/arch/mips32/arch.py b/miasm2/arch/mips32/arch.py
index 04ce6bdd..38ed2811 100644
--- a/miasm2/arch/mips32/arch.py
+++ b/miasm2/arch/mips32/arch.py
@@ -430,13 +430,13 @@ class mips32_esize(mips32_imm, cpu.m_arg):
 
 class mips32_eposh(mips32_imm, cpu.m_arg):
     def decode(self, v):
-        self.expr = ExprInt32(v-int(self.parent.epos.expr.arg)+1)
+        self.expr = ExprInt32(v-int(self.parent.epos.expr)+1)
         return True
 
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg) + int(self.parent.epos.expr.arg) -1
+        v = int(self.expr.arg) + int(self.parent.epos.expr) -1
         self.value = v
         return True
 
@@ -446,7 +446,7 @@ class mips32_eposh(mips32_imm, cpu.m_arg):
 class mips32_cpr(cpu.m_arg):
     parser = regs.regs_cpr0_info.parser
     def decode(self, v):
-        index = int(self.parent.cpr0.expr.arg) << 3
+        index = int(self.parent.cpr0.expr) << 3
         index += v
         self.expr = regs.regs_cpr0_expr[index]
         return True
diff --git a/miasm2/arch/mips32/sem.py b/miasm2/arch/mips32/sem.py
index 93f7d8c3..d03772ca 100644
--- a/miasm2/arch/mips32/sem.py
+++ b/miasm2/arch/mips32/sem.py
@@ -131,8 +131,8 @@ def l_and(arg1, arg2, arg3):
 
 @sbuild.parse
 def ext(arg1, arg2, arg3, arg4):
-    pos = int(arg3.arg)
-    size = int(arg4.arg)
+    pos = int(arg3)
+    size = int(arg4)
     arg1 = arg2[pos:pos + size].zeroExtend(32)
 
 @sbuild.parse
@@ -311,8 +311,8 @@ def tlbp():
 
 def ins(ir, instr, a, b, c, d):
     e = []
-    pos = int(c.arg)
-    l = int(d.arg)
+    pos = int(c)
+    l = int(d)
 
     my_slices = []
     if pos != 0:
diff --git a/miasm2/arch/msp430/arch.py b/miasm2/arch/msp430/arch.py
index 56793a11..ce0fe70f 100644
--- a/miasm2/arch/msp430/arch.py
+++ b/miasm2/arch/msp430/arch.py
@@ -193,7 +193,7 @@ class instruction_msp430(instruction):
         # Call argument is an absolute offset
         # Other offsets are relative to instruction offset
         if self.name != "call":
-            self.args[0] =  ExprInt(int(e.arg) - self.offset, 16)
+            self.args[0] =  ExprInt(int(e) - self.offset, 16)
 
     def get_info(self, c):
         pass
@@ -371,7 +371,7 @@ class msp430_sreg_arg(reg_noarg, m_arg):
             self.parent.a_s.value = 0
             self.value = self.reg_info.expr.index(e)
         elif isinstance(e, ExprInt):
-            v = int(e.arg)
+            v = int(e)
             if v == 0xffff and self.parent.size.value == 0:
                 self.parent.a_s.value = 0b11
                 self.value = 3
@@ -404,11 +404,11 @@ class msp430_sreg_arg(reg_noarg, m_arg):
             elif isinstance(e.arg, ExprInt):
                 self.parent.a_s.value = 0b01
                 self.value = self.reg_info.expr.index(SR)
-                self.parent.off_s.value = int(e.arg.arg)
+                self.parent.off_s.value = int(e.arg)
             elif isinstance(e.arg, ExprOp):
                 self.parent.a_s.value = 0b01
                 self.value = self.reg_info.expr.index(e.arg.args[0])
-                self.parent.off_s.value = int(e.arg.args[1].arg)
+                self.parent.off_s.value = int(e.arg.args[1])
             else:
                 raise NotImplementedError(
                     'unknown instance e.arg = %s' % type(e.arg))
@@ -464,7 +464,7 @@ class msp430_dreg_arg(msp430_sreg_arg):
                     'unknown instance e.arg = %s' % type(e.arg))
             self.parent.a_d.value = 1
             self.value = self.reg_info.expr.index(r)
-            self.parent.off_d.value = int(i.arg)
+            self.parent.off_d.value = int(i)
         else:
             raise NotImplementedError('unknown instance e = %s' % type(e))
         return True
@@ -550,7 +550,7 @@ class msp430_offs(imm_noarg, m_arg):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if (1 << (self.l - 1)) & v:
             v = -((0xffff ^ v) + 1)
         v = self.encodeval(v)
diff --git a/miasm2/arch/sh4/arch.py b/miasm2/arch/sh4/arch.py
index d9ac2c9f..7c76e003 100644
--- a/miasm2/arch/sh4/arch.py
+++ b/miasm2/arch/sh4/arch.py
@@ -247,7 +247,7 @@ class sh4_dgpreg_imm(sh4_dgpreg):
                 return False
             if not isinstance(res[jrb], ExprInt):
                 return False
-            d = int(res[jrb].arg)
+            d = int(res[jrb])
             p.disp.value = d / (s / 8)
             if not res[jra] in gpregs.expr:
                 return False
@@ -275,7 +275,7 @@ class sh4_simm(sh4_imm):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if (1 << (self.l - 1)) & v:
             v = -((0xffffffff ^ v) + 1)
         v = self.encodeval(v)
@@ -291,7 +291,7 @@ class sh4_dpc16imm(sh4_dgpreg):
         return True
 
     def calcdisp(self, v):
-        v = (int(v.arg) - 4) / 2
+        v = (int(v) - 4) / 2
         if not 0 < v <= 0xff:
             return None
         return v
@@ -328,7 +328,7 @@ class sh4_dgbrimm8(sh4_dgpreg):
             return False
         if not isinstance(res[jra], ExprInt):
             return False
-        self.value = int(res[jra].arg) / (s / 8)
+        self.value = int(res[jra]) / (s / 8)
         return True
 
 
@@ -341,7 +341,7 @@ class sh4_dpc32imm(sh4_dpc16imm):
         return True
 
     def calcdisp(self, v):
-        v = (int(v.arg) - 4) / 4
+        v = (int(v) - 4) / 4
         if not 0 < v <= 0xff:
             return None
         return v
@@ -373,7 +373,7 @@ class sh4_pc32imm(m_arg):
             return False
         if not isinstance(res[jra], ExprInt):
             return False
-        v = (int(res[jra].arg) - 4) / 4
+        v = (int(res[jra]) - 4) / 4
         if v is None:
             return False
         self.value = v
diff --git a/miasm2/arch/x86/arch.py b/miasm2/arch/x86/arch.py
index 28cac255..4a07571f 100644
--- a/miasm2/arch/x86/arch.py
+++ b/miasm2/arch/x86/arch.py
@@ -554,7 +554,7 @@ class instruction_x86(instruction):
         if not isinstance(expr, ExprInt):
             log.warning('dynamic dst %r', expr)
             return
-        self.args[0] = ExprInt(int(expr.arg) - self.offset, self.mode)
+        self.args[0] = ExprInt(int(expr) - self.offset, self.mode)
 
     def get_info(self, c):
         self.additional_info.g1.value = c.g1.value
@@ -1139,7 +1139,7 @@ class x86_s08to16(x86_imm):
     def expr2int(self, e):
         if not isinstance(e, ExprInt):
             return None
-        v = int(e.arg)
+        v = int(e)
         if v & ~((1 << self.l) - 1) != 0:
             return None
         return v
@@ -1158,7 +1158,7 @@ class x86_s08to16(x86_imm):
     def encode(self):
         if not isinstance(self.expr, ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         opmode = self.parent.v_opmode()
 
         out_size = self.out_size
@@ -1701,7 +1701,7 @@ def exprfindmod(e, o=None):
                 out = r
             return out
         elif e.op == "*":
-            mul = int(e.args[1].arg)
+            mul = int(e.args[1])
             a = e.args[0]
             i = size2gpregs[a.size].expr.index(a)
             o[i] = mul
@@ -1767,16 +1767,16 @@ def parse_mem(expr, parent, w8, sx=0, xmm=0, mm=0):
                                            (False, f_u08, ExprInt8),
                                            (False, f_u16, ExprInt16),
                                            (False, f_u32, ExprInt32)]:
-            value = cast_int(int(disp.arg))
+            value = cast_int(int(disp))
             if admode < value.size:
                 if signed:
-                    if int(disp.arg) != sign_ext(int(value.arg), admode, disp.size):
+                    if int(disp.arg) != sign_ext(int(value), admode, disp.size):
                         continue
                 else:
-                    if int(disp.arg) != int(value.arg):
+                    if int(disp.arg) != int(value):
                         continue
             else:
-                if int(disp.arg) != sign_ext(int(value.arg), value.size, admode):
+                if int(disp.arg) != sign_ext(int(value), value.size, admode):
                     continue
             x1 = dict(dct_expr)
             x1[f_imm] = (encoding, value)
@@ -1900,7 +1900,7 @@ def modrm2expr(modrm, parent, w8, sx=0, xmm=0, mm=0):
     if f_imm in modrm:
         if parent.disp.value is None:
             return None
-        o.append(ExprInt(int(parent.disp.expr.arg), admode))
+        o.append(ExprInt(int(parent.disp.expr), admode))
     expr = ExprOp('+', *o)
     if w8 == 0:
         opmode = 8
@@ -1972,7 +1972,7 @@ class x86_rm_arg(m_arg):
         moddd = False
         for v in v_cand:
             new_v_cand.append(v)
-            if f_imm in v and int(v[f_imm][1].arg) == 0:
+            if f_imm in v and int(v[f_imm][1]) == 0:
                 v = dict(v)
                 del(v[f_imm])
                 new_v_cand.append(v)
@@ -1986,7 +1986,7 @@ class x86_rm_arg(m_arg):
             # patch value in modrm
             if f_imm in v:
                 size, disp = v[f_imm]
-                disp = int(disp.arg)
+                disp = int(disp)
 
                 v[f_imm] = size
             vo = v
@@ -2580,7 +2580,7 @@ class bs_cl1(bsi, m_arg):
     def encode(self):
         if self.expr == regs08_expr[1]:
             self.value = 1
-        elif isinstance(self.expr, ExprInt) and int(self.expr.arg) == 1:
+        elif isinstance(self.expr, ExprInt) and int(self.expr) == 1:
             self.value = 0
         else:
             return False
@@ -2703,7 +2703,7 @@ class bs_cond_imm(bs_cond_scale, m_arg):
         else:
             l = self.parent.v_opmode()
         if isinstance(self.expr, ExprInt):
-            v = int(self.expr.arg)
+            v = int(self.expr)
             mask = ((1 << l) - 1)
             self.expr = ExprInt(v & mask, l)
 
@@ -2733,7 +2733,7 @@ class bs_cond_imm(bs_cond_scale, m_arg):
         self.parent.rex_w.value = 0
         # special case for push
         if len(self.parent.args) == 1:
-            v = int(self.expr.arg)
+            v = int(self.expr)
             l = self.parent.v_opmode()
             l = min(l, self.max_size)
 
@@ -2750,7 +2750,7 @@ class bs_cond_imm(bs_cond_scale, m_arg):
             self.parent.rex_w.value = 1
 
         l = self.parent.v_opmode()
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if arg0_expr.size == 8:
             if not hasattr(self.parent, 'w8'):
                 raise StopIteration
@@ -2826,7 +2826,7 @@ class bs_rel_off(bs_cond_imm):
         self.expr = expr
         l = self.parent.mode
         if isinstance(self.expr, ExprInt):
-            v = int(self.expr.arg)
+            v = int(self.expr)
             mask = ((1 << l) - 1)
             self.expr = ExprInt(v & mask, l)
         return start, stop
@@ -2889,7 +2889,7 @@ class bs_s08(bs_rel_off):
             l = self.parent.v_opmode()
             self.l = l
         l = offsize(self.parent)
-        v = int(self.expr.arg)
+        v = int(self.expr)
         mask = ((1 << self.l) - 1)
         if self.l > l:
             raise StopIteration
@@ -2936,7 +2936,7 @@ class bs_moff(bsi):
             self.l = 16
         else:
             self.l = 32
-        v = int(m.args[1].arg)
+        v = int(m.args[1])
         mask = ((1 << self.l) - 1)
         if v != sign_ext(v & mask, self.l, l):
             raise StopIteration
@@ -2995,7 +2995,7 @@ class bs_movoff(m_arg):
         if not isinstance(self.expr, ExprMem) or not isinstance(self.expr.arg, ExprInt):
             raise StopIteration
         self.l = p.v_admode()
-        v = int(self.expr.arg.arg)
+        v = int(self.expr.arg)
         mask = ((1 << self.l) - 1)
         if v != mask & v:
             raise StopIteration
@@ -3051,7 +3051,7 @@ class bs_msegoff(m_arg):
         if not isinstance(self.expr.args[1], ExprInt):
             raise StopIteration
         l = self.parent.v_opmode()
-        v = int(self.expr.args[0].arg)
+        v = int(self.expr.args[0])
         mask = ((1 << self.l) - 1)
         if v != sign_ext(v & mask, self.l, l):
             raise StopIteration
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index 17965fdc..27ee5b80 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -430,7 +430,7 @@ def l_test(ir, instr, a, b):
 def get_shift(a, b):
     # b.size must match a
     if isinstance(b, m2_expr.ExprInt):
-        b = m2_expr.ExprInt(int(b.arg), a.size)
+        b = m2_expr.ExprInt(int(b), a.size)
     else:
         b = b.zeroExtend(a.size)
     if a.size == 64:
@@ -472,7 +472,7 @@ def _rotate_tpl(ir, instr, a, b, op, left=False, include_cf=False):
 
     # Don't generate conditional shifter on constant
     if isinstance(shifter, m2_expr.ExprInt):
-        if int(shifter.arg) != 0:
+        if int(shifter) != 0:
             return e_do, []
         else:
             return [], []
@@ -569,7 +569,7 @@ def _shift_tpl(op, ir, instr, a, b, c=None, op_inv=None, left=False,
 
     # Don't generate conditional shifter on constant
     if isinstance(shifter, m2_expr.ExprInt):
-        if int(shifter.arg) != 0:
+        if int(shifter) != 0:
             return e_do, []
         else:
             return [], []
@@ -1172,7 +1172,7 @@ def ret(ir, instr, a=None):
         a = m2_expr.ExprInt(0, s)
         value = (myesp + (m2_expr.ExprInt((s / 8), s)))
     else:
-        a = m2_expr.ExprInt(int(a.arg), s)
+        a = m2_expr.ExprInt(int(a), s)
         value = (myesp + (m2_expr.ExprInt((s / 8), s) + a))
 
     e.append(m2_expr.ExprAff(myesp, value))
@@ -3624,7 +3624,7 @@ def ps_rl_ll(ir, instr, a, b, op, size):
                        i, i + size))
 
     if isinstance(test, m2_expr.ExprInt):
-        if int(test.arg) == 0:
+        if int(test) == 0:
             return [m2_expr.ExprAff(a[0:a.size], m2_expr.ExprCompose(slices))], []
         else:
             return [m2_expr.ExprAff(a, m2_expr.ExprInt(0, a.size))], []
@@ -3803,7 +3803,7 @@ def pinsr(ir, instr, a, b, c, size):
             32: 0x3,
             64: 0x1}[size]
 
-    sel = (int(c.arg) & mask) * size
+    sel = (int(c) & mask) * size
     e.append(m2_expr.ExprAff(a[sel:sel + size], b[:size]))
 
     return e, []
@@ -3833,7 +3833,7 @@ def pextr(ir, instr, a, b, c, size):
             32: 0x3,
             64: 0x1}[size]
 
-    sel = (int(c.arg) & mask) * size
+    sel = (int(c) & mask) * size
     e.append(m2_expr.ExprAff(a, b[sel:sel + size].zeroExtend(a.size)))
 
     return e, []
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py
index 92bde778..81c18f1f 100644
--- a/miasm2/core/cpu.py
+++ b/miasm2/core/cpu.py
@@ -1433,7 +1433,7 @@ class cls_mn(object):
         args = []
         for d in dst:
             if isinstance(d, m2_expr.ExprInt):
-                l = symbol_pool.getby_offset_create(int(d.arg))
+                l = symbol_pool.getby_offset_create(int(d))
 
                 a = m2_expr.ExprId(l.name, d.size)
             else:
@@ -1457,7 +1457,7 @@ class imm_noarg(object):
     def expr2int(self, e):
         if not isinstance(e, m2_expr.ExprInt):
             return None
-        v = int(e.arg)
+        v = int(e)
         if v & ~self.intmask != 0:
             return None
         return v
@@ -1542,7 +1542,7 @@ class int32_noarg(imm_noarg):
     def encode(self):
         if not isinstance(self.expr, m2_expr.ExprInt):
             return False
-        v = int(self.expr.arg)
+        v = int(self.expr)
         if sign_ext(v & self.lmask, self.l, self.intsize) != v:
             return False
         v = self.encodeval(v & self.lmask)
diff --git a/miasm2/expression/expression_helper.py b/miasm2/expression/expression_helper.py
index 09feffc2..0c661c2a 100644
--- a/miasm2/expression/expression_helper.py
+++ b/miasm2/expression/expression_helper.py
@@ -43,7 +43,7 @@ def merge_sliceto_slice(args):
             # sources_int[a.start] = a
             # copy ExprInt because we will inplace modify arg just below
             # /!\ TODO XXX never ever modify inplace args...
-            sources_int[a[1]] = (m2_expr.ExprInt(int(a[0].arg),
+            sources_int[a[1]] = (m2_expr.ExprInt(int(a[0]),
                                                  a[2] - a[1]),
                                  a[1],
                                  a[2])
@@ -80,12 +80,12 @@ def merge_sliceto_slice(args):
             s_start, s_stop = sorted_s[-1][1][1], sorted_s[-1][1][2]
             size += s_stop - s_start
             a = m2_expr.mod_size2uint[size](
-                (int(out[0].arg) << (out[1] - s_start)) +
-                 int(sorted_s[-1][1][0].arg))
+                (int(out[0]) << (out[1] - s_start)) +
+                 int(sorted_s[-1][1][0]))
             out[0] = m2_expr.ExprInt(a)
             sorted_s.pop()
             out[1] = s_start
-        out[0] = m2_expr.ExprInt(int(out[0].arg), size)
+        out[0] = m2_expr.ExprInt(int(out[0]), size)
         final_sources.append((start, out))
 
     final_sources_int = final_sources
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index 2d5e4e6b..49dfbcc0 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -267,7 +267,7 @@ def simp_cst_propagation(e_s, e):
     # A << int with A ExprCompose => move index
     if op == "<<" and isinstance(args[0], ExprCompose) and isinstance(args[1], ExprInt):
         final_size = args[0].size
-        shift = int(args[1].arg)
+        shift = int(args[1])
         new_args = []
         # shift indexes
         for expr, start, stop in args[0].args:
@@ -291,7 +291,7 @@ def simp_cst_propagation(e_s, e):
     # A >> int with A ExprCompose => move index
     if op == ">>" and isinstance(args[0], ExprCompose) and isinstance(args[1], ExprInt):
         final_size = args[0].size
-        shift = int(args[1].arg)
+        shift = int(args[1])
         new_args = []
         # shift indexes
         for expr, start, stop in args[0].args:
@@ -335,14 +335,14 @@ def simp_cst_propagation(e_s, e):
         dest, rounds, cf = args
         # Skipped if rounds is 0
         if (isinstance(rounds, ExprInt) and
-            int(rounds.arg) == 0):
+            int(rounds) == 0):
             return dest
         elif all(map(lambda x: isinstance(x, ExprInt), args)):
             # The expression can be resolved
-            tmp = int(dest.arg)
-            cf = int(cf.arg)
+            tmp = int(dest)
+            cf = int(cf)
             size = dest.size
-            tmp_count = (int(rounds.arg) &
+            tmp_count = (int(rounds) &
                          (0x3f if size == 64 else 0x1f)) % (size + 1)
             if op == ">>>c_rez":
                 while (tmp_count != 0):
@@ -350,14 +350,14 @@ def simp_cst_propagation(e_s, e):
                     tmp = (tmp >> 1) + (cf << (size - 1))
                     cf = tmp_cf
                     tmp_count -= 1
-                    tmp &= int(dest.mask.arg)
+                    tmp &= int(dest.mask)
             elif op == "<<<c_rez":
                 while (tmp_count != 0):
                     tmp_cf = (tmp >> (size - 1)) & 1
                     tmp = (tmp << 1) + cf
                     cf = tmp_cf
                     tmp_count -= 1
-                    tmp &= int(dest.mask.arg)
+                    tmp &= int(dest.mask)
             else:
                 raise RuntimeError("Unknown operation: %s" % op)
             return ExprInt(tmp, size=dest.size)
@@ -518,7 +518,7 @@ def simp_slice(e_s, e):
     elif (isinstance(e.arg, ExprOp) and e.arg.op in [">>", "<<"] and
           isinstance(e.arg.args[1], ExprInt)):
         arg, shift = e.arg.args
-        shift = int(shift.arg)
+        shift = int(shift)
         if e.arg.op == ">>":
             if shift + e.stop <= arg.size:
                 return arg[e.start + shift:e.stop + shift]
diff --git a/miasm2/expression/simplifications_cond.py b/miasm2/expression/simplifications_cond.py
index a5acdba6..03bf6166 100644
--- a/miasm2/expression/simplifications_cond.py
+++ b/miasm2/expression/simplifications_cond.py
@@ -197,13 +197,13 @@ def __comp_signed(arg1, arg2):
     """Return ExprInt1(1) if arg1 <s arg2 else ExprInt1(0)
     @arg1, @arg2: ExprInt"""
 
-    val1 = int(arg1.arg)
+    val1 = int(arg1)
     if val1 >> (arg1.size - 1) == 1:
-        val1 = - ((int(arg1.mask.arg) ^ val1) + 1)
+        val1 = - ((int(arg1.mask) ^ val1) + 1)
 
-    val2 = int(arg2.arg)
+    val2 = int(arg2)
     if val2 >> (arg2.size - 1) == 1:
-        val2 = - ((int(arg2.mask.arg) ^ val2) + 1)
+        val2 = - ((int(arg2.mask) ^ val2) + 1)
 
     return m2_expr.ExprInt1(1) if (val1 < val2) else m2_expr.ExprInt1(0)
 
diff --git a/miasm2/expression/stp.py b/miasm2/expression/stp.py
index 7ef96166..c9b76e4c 100644
--- a/miasm2/expression/stp.py
+++ b/miasm2/expression/stp.py
@@ -8,7 +8,7 @@ TODO XXX: finish
 
 
 def ExprInt_strcst(self):
-    b = bin(int(self.arg))[2::][::-1]
+    b = bin(int(self))[2::][::-1]
     b += "0" * self.size
     b = b[:self.size][::-1]
     return "0bin" + b
diff --git a/miasm2/ir/ir.py b/miasm2/ir/ir.py
index cd512e34..ca5100e2 100644
--- a/miasm2/ir/ir.py
+++ b/miasm2/ir/ir.py
@@ -326,7 +326,7 @@ class ir(object):
                 isinstance(ad.name, asm_label)):
             ad = ad.name
         if isinstance(ad, m2_expr.ExprInt):
-            ad = int(ad.arg)
+            ad = int(ad)
         if type(ad) in [int, long]:
             ad = self.symbol_pool.getby_offset_create(ad)
         elif isinstance(ad, asm_label):
@@ -514,7 +514,7 @@ class ir(object):
             for d in dst:
                 if isinstance(d, m2_expr.ExprInt):
                     d = m2_expr.ExprId(
-                        self.symbol_pool.getby_offset_create(int(d.arg)))
+                        self.symbol_pool.getby_offset_create(int(d)))
                 if expr_is_label(d):
                     self._graph.add_edge(lbl, d.name)
 
diff --git a/miasm2/ir/symbexec.py b/miasm2/ir/symbexec.py
index 1dc8dde1..4c133c4c 100644
--- a/miasm2/ir/symbexec.py
+++ b/miasm2/ir/symbexec.py
@@ -295,7 +295,7 @@ class symbexec(object):
         ex = self.expr_simp(self.eval_expr(ex, {}))
         if not isinstance(ex, m2_expr.ExprInt):
             return None
-        ptr_diff = int(int32(ex.arg))
+        ptr_diff = int(int32(ex))
         out = []
         if ptr_diff < 0:
             #    [a     ]
diff --git a/miasm2/ir/translators/miasm.py b/miasm2/ir/translators/miasm.py
index f1e4c5ae..ef91cfb1 100644
--- a/miasm2/ir/translators/miasm.py
+++ b/miasm2/ir/translators/miasm.py
@@ -10,7 +10,7 @@ class TranslatorMiasm(Translator):
         return "ExprId(%s, size=%d)" % (repr(expr.name), expr.size)
 
     def from_ExprInt(self, expr):
-        return "ExprInt(0x%x, %d)" % (int(expr.arg), expr.size)
+        return "ExprInt(0x%x, %d)" % (int(expr), expr.size)
 
     def from_ExprCond(self, expr):
         return "ExprCond(%s, %s, %s)" % (self.from_expr(expr.cond),
diff --git a/miasm2/jitter/codegen.py b/miasm2/jitter/codegen.py
index c5f28b9f..540509bf 100644
--- a/miasm2/jitter/codegen.py
+++ b/miasm2/jitter/codegen.py
@@ -291,7 +291,7 @@ class CGen(object):
             return ("((%s)?(%s):(%s))" % (cond, src1, src2),
                     "((%s)?(%s):(%s))" % (cond, src1b, src2b))
         elif isinstance(expr, m2_expr.ExprInt):
-            offset = int(expr.arg)
+            offset = int(expr)
             self.add_label_index(dst2index, offset)
             return ("%s" % dst2index[offset],
                     hex(offset))
diff --git a/miasm2/jitter/emulatedsymbexec.py b/miasm2/jitter/emulatedsymbexec.py
index d72de771..6a0882ba 100644
--- a/miasm2/jitter/emulatedsymbexec.py
+++ b/miasm2/jitter/emulatedsymbexec.py
@@ -90,7 +90,7 @@ class EmulatedSymbExec(symbexec):
         """Handle 'segm' operation"""
         if expr.op != "segm":
             return expr
-        segm_nb = int(expr.args[0].arg)
+        segm_nb = int(expr.args[0])
         segmaddr = self.cpu.get_segm_base(segm_nb)
         return e_s(m2_expr.ExprOp("+",
                                   m2_expr.ExprInt(segmaddr, expr.size),
diff --git a/miasm2/jitter/llvmconvert.py b/miasm2/jitter/llvmconvert.py
index 3403651f..3ac75cd7 100644
--- a/miasm2/jitter/llvmconvert.py
+++ b/miasm2/jitter/llvmconvert.py
@@ -43,7 +43,7 @@ class LLVMType(llvm_c.Type):
     def generic(cls, e):
         "Generic value for execution"
         if isinstance(e, m2_expr.ExprInt):
-            return llvm_e.GenericValue.int(LLVMType.int(e.size), int(e.arg))
+            return llvm_e.GenericValue.int(LLVMType.int(e.size), int(e))
         elif isinstance(e, llvm_e.GenericValue):
             return e
         else:
@@ -365,7 +365,7 @@ class LLVMFunction():
         builder = self.builder
 
         if isinstance(expr, m2_expr.ExprInt):
-            ret = llvm_c.Constant.int(LLVMType.int(expr.size), int(expr.arg))
+            ret = llvm_c.Constant.int(LLVMType.int(expr.size), int(expr))
             self.update_cache(expr, ret)
             return ret
 
diff --git a/test/analysis/depgraph.py b/test/analysis/depgraph.py
index f1d9151c..0b8d97b6 100644
--- a/test/analysis/depgraph.py
+++ b/test/analysis/depgraph.py
@@ -637,7 +637,7 @@ def flatNode(node):
         if isinstance(node.element, ExprId):
             element = node.element.name
         elif isinstance(node.element, ExprInt):
-            element = int(node.element.arg.arg)
+            element = int(node.element.arg)
         else:
             RuntimeError("Unsupported type '%s'" % type(enode.element))
         return (node.label.name,