about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <devnull@localhost>2012-06-13 13:04:15 +0200
committerserpilliere <devnull@localhost>2012-06-13 13:04:15 +0200
commit303600c1c80022a45743ae43ca00198150176439 (patch)
treea9c6443e4c65518fabe88594cb30edc658aa4771
parentb4eec8cd3ca2ab6ac12d5da2fbb1804451a5ee17 (diff)
downloadmiasm-303600c1c80022a45743ae43ca00198150176439.tar.gz
miasm-303600c1c80022a45743ae43ca00198150176439.zip
expression: move test case in example; WARNING: - operator is now unary; +*\&... are n-aire
-rw-r--r--example/expression/manip_expression6.py107
-rw-r--r--miasm/expression/expression_helper.py108
2 files changed, 107 insertions, 108 deletions
diff --git a/example/expression/manip_expression6.py b/example/expression/manip_expression6.py
new file mode 100644
index 00000000..079faf76
--- /dev/null
+++ b/example/expression/manip_expression6.py
@@ -0,0 +1,107 @@
+from miasm.expression.expression import *
+from miasm.expression.expression_helper import *
+import os
+
+filename = os.environ.get('PYTHONSTARTUP')
+if filename and os.path.isfile(filename):
+    execfile(filename)
+
+a = ExprId('a')
+b = ExprId('b')
+c = ExprId('c')
+d = ExprId('d')
+
+
+x = ExprMem(a+b+ExprInt32(0x42))
+
+def replace_expr(e):
+    #print 'visit', e
+    dct = {c+ExprInt32(0x42):d,
+           a+b:c,}
+    if e in dct:
+        return dct[e]
+    return e
+
+
+print x
+y = x.visit(replace_expr)
+print y
+print x.copy()
+print y.copy()
+print y == y.copy()
+print repr(y), repr(y.copy())
+
+
+z = ExprCompose([(a[5:9], 0, 8), (b, 8, 24), (x, 24, 32)])
+print z
+print z.copy()
+print z[:31].copy().visit(replace_expr)
+
+print 'replace'
+print x.replace_expr({c+ExprInt32(0x42):d,
+                      a+b:c,})
+print z.replace_expr({c+ExprInt32(0x42):d,
+                      a+b:c,})
+
+
+u = z.copy()
+print u
+u.args[-1][0].arg.args[1].arg = uint32(0x45)
+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],
+           ]
+
+
+for e in to_test:
+    print "#"*80
+    print e
+    print e.visit(expr_simp)
+
diff --git a/miasm/expression/expression_helper.py b/miasm/expression/expression_helper.py
index c0fb6ea9..94b6f32b 100644
--- a/miasm/expression/expression_helper.py
+++ b/miasm/expression/expression_helper.py
@@ -316,111 +316,3 @@ def expr_simp(e):
         return e
 
 
-if __name__ == "__main__":
-    from miasm.expression.expression import *
-    from miasm.expression.expression_helper import *
-    import os
-
-    filename = os.environ.get('PYTHONSTARTUP')
-    if filename and os.path.isfile(filename):
-        execfile(filename)
-
-    a = ExprId('a')
-    b = ExprId('b')
-    c = ExprId('c')
-    d = ExprId('d')
-
-
-    x = ExprMem(a+b+ExprInt32(0x42))
-
-    def replace_expr(e):
-        #print 'visit', e
-        dct = {c+ExprInt32(0x42):d,
-               a+b:c,}
-        if e in dct:
-            return dct[e]
-        return e
-
-
-    print x
-    y = x.visit(replace_expr)
-    print y
-    print x.copy()
-    print y.copy()
-    print y == y.copy()
-    print repr(y), repr(y.copy())
-
-
-    z = ExprCompose([(a[5:9], 0, 8), (b, 8, 24), (x, 24, 32)])
-    print z
-    print z.copy()
-    print z[:31].copy().visit(replace_expr)
-
-    print 'replace'
-    print x.replace_expr({c+ExprInt32(0x42):d,
-                          a+b:c,})
-    print z.replace_expr({c+ExprInt32(0x42):d,
-                          a+b:c,})
-
-
-    u = z.copy()
-    print u
-    u.args[-1][0].arg.args[1].arg = uint32(0x45)
-    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],
-               ]
-
-
-    for e in to_test:
-        print "#"*80
-        print e
-        print e.visit(expr_simp)
-