diff options
Diffstat (limited to 'example/expression/manip_expression6.py')
| -rw-r--r-- | example/expression/manip_expression6.py | 135 |
1 files changed, 77 insertions, 58 deletions
diff --git a/example/expression/manip_expression6.py b/example/expression/manip_expression6.py index 180022e1..7e32da4b 100644 --- a/example/expression/manip_expression6.py +++ b/example/expression/manip_expression6.py @@ -51,69 +51,88 @@ print u print z print u == z -to_test = [(ExprInt32(5)+c+a+b-a+ExprInt32(1)-ExprInt32(5)), - a+b+c-a-b-c+a, - a+a+b+c-(a+(b+c)), - c^b^a^c^b, - a^ExprInt32(0), - (a+b)-b, - -(ExprInt32(0)-((a+b)-b)), - - ExprOp('<<<', a, ExprInt32(32)), - ExprOp('>>>', a, ExprInt32(32)), - ExprOp('>>>', a, ExprInt32(0)), - ExprOp('<<', a, ExprInt32(0)), - - ExprOp('<<<', a, ExprOp('<<<', b, c)), - ExprOp('<<<', ExprOp('<<<', a, b), c), - ExprOp('<<<', ExprOp('>>>', a, b), c), - ExprOp('>>>', ExprOp('<<<', a, b), c), - ExprOp('>>>', ExprOp('<<<', a, b), b), - - - ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)), - - ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)) ^ ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)), - ExprOp(">>", (a & ExprInt32(0xF)), ExprInt32(0x15)), - ExprOp("==", ExprInt32(12), ExprInt32(10)), - ExprOp("==", ExprInt32(12), ExprInt32(12)), - ExprOp("==", a|ExprInt32(12), ExprInt32(0)), - ExprOp("==", a|ExprInt32(12), ExprInt32(14)), - ExprOp("parity", ExprInt32(0xf)), - ExprOp("parity", ExprInt32(0xe)), - ExprInt32(0x4142)[:32], - ExprInt32(0x4142)[:8], - ExprInt32(0x4142)[8:16], - a[:32], - a[:8][:8], - a[:16][:8], - a[8:16][:8], - a[8:32][:8], - a[:16][8:16], - ExprCompose([(a, 0, 32)]), - ExprCompose([(a[:16], 0, 16)]), - ExprCompose([(a[:16], 0, 16), (a, 16, 32)]), - ExprCompose([(a[:16], 0, 16), (a[16:32], 16, 32)]), - - ExprMem(a)[:32], - ExprMem(a)[:16], - - ExprCond(ExprInt32(1), a, b), - ExprCond(ExprInt32(0), b, a), - - ExprInt32(0x80000000)[31:32], - ExprCompose([(ExprInt16(0x1337)[:8], 0, 8),(ExprInt16(0x1337)[8:16], 8, 16)]), - - ExprCompose([(ExprInt32(0x1337beef)[8:16], 8, 16), +to_test = [(ExprInt32(1)-ExprInt32(1), ExprInt32(0)), + ((ExprInt32(5)+c+a+b-a+ExprInt32(1)-ExprInt32(5)),b+c+ExprInt32(1)), + (a+b+c-a-b-c+a,a), + (a+a+b+c-(a+(b+c)),a), + (c^b^a^c^b,a), + (a^ExprInt32(0),a), + ((a+b)-b,a), + (-(ExprInt32(0)-((a+b)-b)),a), + + (ExprOp('<<<', a, ExprInt32(32)),a), + (ExprOp('>>>', a, ExprInt32(32)),a), + (ExprOp('>>>', a, ExprInt32(0)),a), + (ExprOp('<<', a, ExprInt32(0)),a), + + (ExprOp('<<<', a, ExprOp('<<<', b, c)), + ExprOp('<<<', a, ExprOp('<<<', b, c))), + (ExprOp('<<<', ExprOp('<<<', a, b), c), + ExprOp('<<<', ExprOp('<<<', a, b), c)), + (ExprOp('<<<', ExprOp('>>>', a, b), c), + ExprOp('<<<', ExprOp('>>>', a, b), c)), + (ExprOp('>>>', ExprOp('<<<', a, b), c), + ExprOp('>>>', ExprOp('<<<', a, b), c)), + (ExprOp('>>>', ExprOp('<<<', a, b), b), + ExprOp('>>>', ExprOp('<<<', a, b), b)), + + + (ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)), + ExprOp('<<<', a, ExprInt32(8))), + + (ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)) ^ ExprOp('>>>', ExprOp('<<<', a, ExprInt32(10)), ExprInt32(2)), + ExprInt32(0)), + (ExprOp(">>", (a & ExprInt32(0xF)), ExprInt32(0x15)), + ExprInt32(0)), + (ExprOp("==", ExprInt32(12), ExprInt32(10)), ExprInt32(0)), + (ExprOp("==", ExprInt32(12), ExprInt32(12)), ExprInt32(1)), + (ExprOp("==", a|ExprInt32(12), ExprInt32(0)),ExprInt32(0)), + (ExprOp("==", a|ExprInt32(12), ExprInt32(14)), + ExprOp("==", a|ExprInt32(12), ExprInt32(14))), + (ExprOp("parity", ExprInt32(0xf)), ExprInt32(1)), + (ExprOp("parity", ExprInt32(0xe)), ExprInt32(0)), + (ExprInt32(0x4142)[:32],ExprInt32(0x4142)), + (ExprInt32(0x4142)[:8],ExprInt8(0x42)), + (ExprInt32(0x4142)[8:16],ExprInt8(0x41)), + (a[:32], a), + (a[:8][:8],a[:8]), + (a[:16][:8],a[:8]), + (a[8:16][:8],a[8:16]), + (a[8:32][:8],a[8:16]), + (a[:16][8:16],a[8:16]), + (ExprCompose([(a, 0, 32)]),a), + (ExprCompose([(a[:16], 0, 16)]), a[:16]), + (ExprCompose([(a[:16], 0, 16), (a, 16, 32)]), + ExprCompose([(a[:16], 0, 16), (a, 16, 32)]),), + (ExprCompose([(a[:16], 0, 16), (a[16:32], 16, 32)]), a), + + (ExprMem(a)[:32], ExprMem(a)), + (ExprMem(a)[:16], ExprMem(a, size=16)), + + (ExprCond(ExprInt32(1), a, b), a), + (ExprCond(ExprInt32(0), b, a), a), + + (ExprInt32(0x80000000)[31:32], ExprInt32(1)), + (ExprCompose([(ExprInt16(0x1337)[:8], 0, 8),(ExprInt16(0x1337)[8:16], 8, 16)]), + ExprInt16(0x1337)), + + (ExprCompose([(ExprInt32(0x1337beef)[8:16], 8, 16), (ExprInt32(0x1337beef)[:8], 0, 8), (ExprInt32(0x1337beef)[16:32], 16, 32)]), + ExprInt32(0x1337BEEF)), ] -for e in to_test: +for e, e_check in to_test[:]: + # print "#"*80 - print e - print expr_simp(e) - + e_check = expr_simp(e_check) + print "#"*80 + print str(e), str(e_check) + e_new = expr_simp(e) + print "orig", str(e), "new", str(e_new), "check", str(e_check) + rez = e_new == e_check + if not rez: + fdsfds |