about summary refs log tree commit diff stats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/arch/arm/sem.py2
-rw-r--r--test/arch/msp430/sem.py2
-rw-r--r--test/arch/x86/sem.py24
-rw-r--r--test/expression/expression.py6
-rw-r--r--test/ir/symbexec.py17
5 files changed, 37 insertions, 14 deletions
diff --git a/test/arch/arm/sem.py b/test/arch/arm/sem.py
index 8fc609fb..922642d3 100644
--- a/test/arch/arm/sem.py
+++ b/test/arch/arm/sem.py
@@ -21,7 +21,7 @@ def M(addr):
 
 def compute(asm, inputstate={}, debug=False):
     sympool = dict(regs_init)
-    sympool.update({k: ExprInt_from(k, v) for k, v in inputstate.iteritems()})
+    sympool.update({k: ExprInt(v, k.size) for k, v in inputstate.iteritems()})
     interm = ir_arch()
     symexec = symbexec(interm, sympool)
     instr = mn.fromstring(asm, "l")
diff --git a/test/arch/msp430/sem.py b/test/arch/msp430/sem.py
index 515b4c53..4d39d357 100644
--- a/test/arch/msp430/sem.py
+++ b/test/arch/msp430/sem.py
@@ -19,7 +19,7 @@ def M(addr):
 
 def compute(asm, inputstate={}, debug=False):
     sympool = dict(regs_init)
-    sympool.update({k: ExprInt_from(k, v) for k, v in inputstate.iteritems()})
+    sympool.update({k: ExprInt(v, k.size) for k, v in inputstate.iteritems()})
     interm = ir_arch()
     symexec = symbexec(interm, sympool)
     instr = mn.fromstring(asm, mode)
diff --git a/test/arch/x86/sem.py b/test/arch/x86/sem.py
index 7cf81828..93d2ff83 100644
--- a/test/arch/x86/sem.py
+++ b/test/arch/x86/sem.py
@@ -88,12 +88,12 @@ SSE_B = ExprId('B', 128)
 class TestX86Semantic(unittest.TestCase):
 
     def int_sse_op(self, name, op, elt_size, reg_size, arg1, arg2):
-        arg1 = ExprInt_from(XMM0, arg1)
-        arg2 = ExprInt_from(XMM0, arg2)
+        arg1 = ExprInt(arg1, XMM0.size)
+        arg2 = ExprInt(arg2, XMM0.size)
         sem = compute(ir_32, m32, '%s XMM0, XMM1' % name,
                                   {XMM0: arg1, XMM1: arg2},
                                   False)
-        ref = ExprInt_from(XMM0, int_vec_op(op, elt_size, reg_size, arg1.arg, arg2.arg))
+        ref = ExprInt(int_vec_op(op, elt_size, reg_size, arg1.arg, arg2.arg), XMM0.size)
         self.assertEqual(sem, {XMM0: ref, XMM1: arg2})
 
     def symb_sse_ops(self, names, a, b, ref):
@@ -105,21 +105,21 @@ class TestX86Semantic(unittest.TestCase):
         self.assertEqual(sem, {XMM0: ref, XMM1: b})
 
     def mmx_logical_op(self, name, op, arg1, arg2):
-        arg1 = ExprInt_from(mm0, arg1)
-        arg2 = ExprInt_from(mm0, arg2)
+        arg1 = ExprInt(arg1, mm0.size)
+        arg2 = ExprInt(arg2, mm0.size)
         sem = compute(ir_32, m32, '%s MM0, MM1' % name,
                                   {mm0: arg1, mm1: arg2},
                                   False)
-        ref = ExprInt_from(mm0, op(arg1.arg, arg2.arg))
+        ref = ExprInt(op(arg1.arg, arg2.arg), mm0.size)
         self.assertEqual(sem, {mm0: ref, mm1: arg2})
 
     def sse_logical_op(self, name, op, arg1, arg2):
-        arg1 = ExprInt_from(XMM0, arg1)
-        arg2 = ExprInt_from(XMM1, arg2)
+        arg1 = ExprInt(arg1, XMM0.size)
+        arg2 = ExprInt(arg2, XMM1.size)
         sem = compute(ir_32, m32, '%s XMM0, XMM1' % name,
                                   {XMM0: arg1, XMM1: arg2},
                                   False)
-        ref = ExprInt_from(XMM0, op(arg1.arg, arg2.arg))
+        ref = ExprInt(op(arg1.arg, arg2.arg), XMM0.size)
         self.assertEqual(sem, {XMM0: ref, XMM1: arg2})
 
     def test_SSE_ADD(self):
@@ -137,9 +137,9 @@ class TestX86Semantic(unittest.TestCase):
             self.int_sse_op(op[0], op_sub, op[1], 128, SSE_V1, SSE_V1)
 
     def test_SSE_simp(self):
-        self.symb_sse_ops(["PADDB", "PADDB", "PSUBB"], ExprInt_from(XMM0, 0), SSE_A, SSE_A)
-        self.symb_sse_ops(["PADDB", "PADDQ", "PSUBQ"], ExprInt_from(XMM0, 0), SSE_A, SSE_A)
-        self.symb_sse_ops(["PADDB", "PSUBQ", "PADDQ"], ExprInt_from(XMM0, 0), SSE_A, SSE_A)
+        self.symb_sse_ops(["PADDB", "PADDB", "PSUBB"], ExprInt(0, XMM0.size), SSE_A, SSE_A)
+        self.symb_sse_ops(["PADDB", "PADDQ", "PSUBQ"], ExprInt(0, XMM0.size), SSE_A, SSE_A)
+        self.symb_sse_ops(["PADDB", "PSUBQ", "PADDQ"], ExprInt(0, XMM0.size), SSE_A, SSE_A)
 
     def test_AND(self):
         self.mmx_logical_op("PAND", op_and, MMX_V0, MMX_V1)
diff --git a/test/expression/expression.py b/test/expression/expression.py
index 847ba7eb..58c0ca37 100644
--- a/test/expression/expression.py
+++ b/test/expression/expression.py
@@ -5,7 +5,13 @@ from pdb import pm
 from miasm2.expression.expression import *
 from miasm2.expression.expression_helper import *
 
+# Expression comparison
 assert(ExprInt64(-1) != ExprInt64(-2))
+assert(ExprInt64(1) != ExprInt32(1))
+
+# Expression size
+big_cst = ExprInt(1, size=0x1000)
+assert big_cst.size == 0x1000
 
 # Possible values
 #- Common constants
diff --git a/test/ir/symbexec.py b/test/ir/symbexec.py
index 6df0bbc3..24b02341 100644
--- a/test/ir/symbexec.py
+++ b/test/ir/symbexec.py
@@ -11,6 +11,7 @@ class TestSymbExec(unittest.TestCase):
             ExprCompose, ExprAff
         from miasm2.arch.x86.sem import ir_x86_32
         from miasm2.ir.symbexec import symbexec
+        from miasm2.ir.ir import AssignBlock
 
         addrX = ExprInt32(-1)
         addr0 = ExprInt32(0)
@@ -59,6 +60,22 @@ class TestSymbExec(unittest.TestCase):
         self.assertEqual(e.apply_expr(ExprAff(id_eax, addr9)), addr9)
         self.assertEqual(e.apply_expr(id_eax), addr9)
 
+        # apply_change / eval_ir / apply_expr
+
+        ## x = a (with a = 0x0)
+        assignblk = AssignBlock()
+        assignblk[id_x] = id_a
+        e.eval_ir(assignblk)
+        self.assertEqual(e.apply_expr(id_x), addr0)
+
+        ## x = a (without replacing 'a' with 0x0)
+        e.apply_change(id_x, id_a)
+        self.assertEqual(e.apply_expr(id_x), id_a)
+
+        ## x = a (with a = 0x0)
+        self.assertEqual(e.apply_expr(assignblk.dst2ExprAff(id_x)), addr0)
+        self.assertEqual(e.apply_expr(id_x), addr0)
+
 if __name__ == '__main__':
     testsuite = unittest.TestLoader().loadTestsFromTestCase(TestSymbExec)
     report = unittest.TextTestRunner(verbosity=2).run(testsuite)