about summary refs log tree commit diff stats
path: root/example/expression/get_read_write.py
diff options
context:
space:
mode:
authorCamille Mougey <camille.mougey@cea.fr>2014-09-19 13:58:03 +0200
committerCamille Mougey <camille.mougey@cea.fr>2014-09-19 13:58:03 +0200
commit2bc1d7810dd07f9a0401984125fc82ac5ac7d9aa (patch)
tree40e084cd2bb9e6224c1fdbfef158f71102863897 /example/expression/get_read_write.py
parent69c35ab316c0dae069ad7fb9d0567c6dd8746a8e (diff)
downloadfocaccia-miasm-2bc1d7810dd07f9a0401984125fc82ac5ac7d9aa.tar.gz
focaccia-miasm-2bc1d7810dd07f9a0401984125fc82ac5ac7d9aa.zip
Expression examples: Rename examples with meaningfull names
Diffstat (limited to 'example/expression/get_read_write.py')
-rw-r--r--example/expression/get_read_write.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/example/expression/get_read_write.py b/example/expression/get_read_write.py
new file mode 100644
index 00000000..faa3f9df
--- /dev/null
+++ b/example/expression/get_read_write.py
@@ -0,0 +1,26 @@
+from miasm2.arch.x86.arch import mn_x86
+from miasm2.expression.expression import get_rw
+from miasm2.arch.x86.ira import ir_a_x86_32
+print """
+Simple expression manipulation demo.
+Get read/written registers for a given instruction
+"""
+
+arch = mn_x86
+ir_arch = ir_a_x86_32()
+
+l = arch.fromstring('LODSB', 32)
+l.offset, l.l = 0, 15
+ir_arch.add_instr(l)
+
+print '*' * 80
+for lbl, b in ir_arch.blocs.items():
+    print b
+    for irs in b.irs:
+        o_r, o_w = get_rw(irs)
+        print 'read:   ', [str(x) for x in o_r]
+        print 'written:', [str(x) for x in o_w]
+        print
+ir_arch.gen_graph()
+g = ir_arch.graph()
+open('graph_instr.txt', 'w').write(g)