diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/arch/arm/sem.py | 2 | ||||
| -rw-r--r-- | test/arch/msp430/sem.py | 2 | ||||
| -rw-r--r-- | test/arch/x86/sem.py | 24 | ||||
| -rw-r--r-- | test/expression/expression.py | 6 | ||||
| -rw-r--r-- | test/ir/symbexec.py | 17 |
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) |