about summary refs log tree commit diff stats
path: root/example/expression/manip_expression6.py
diff options
context:
space:
mode:
Diffstat (limited to 'example/expression/manip_expression6.py')
-rw-r--r--example/expression/manip_expression6.py135
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