about summary refs log tree commit diff stats
path: root/example/disasm/full.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2015-02-24 13:03:27 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2015-02-24 13:03:27 +0100
commite593a348527eab2f69005ee934cfce448eac5d5e (patch)
tree5ffa447a2fc60950bbd11103eb4dc76031c430b6 /example/disasm/full.py
parent190381a59ab54a23a1960a65e7ec6b84358a7916 (diff)
parent69181d034b59f97730b529dcce425a199cc945de (diff)
downloadmiasm-e593a348527eab2f69005ee934cfce448eac5d5e.tar.gz
miasm-e593a348527eab2f69005ee934cfce448eac5d5e.zip
Merge pull request #88 from commial/machine-ir
Machine ir
Diffstat (limited to 'example/disasm/full.py')
-rw-r--r--example/disasm/full.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py
index f7ca6780..14829755 100644
--- a/example/disasm/full.py
+++ b/example/disasm/full.py
@@ -57,7 +57,8 @@ if args.verbose:
 
 log.info("import machine...")
 machine = Machine(args.architecture)
-mn, dis_engine, ira = machine.mn, machine.dis_engine, machine.ira
+mn, dis_engine = machine.mn, machine.dis_engine
+ira, ir = machine.ira, machine.ir
 log.info('ok')
 
 log.info('Load binary')
@@ -163,21 +164,31 @@ log.info('total lines %s' % total_l)
 
 # Bonus, generate IR graph
 if args.gen_ir:
-    log.info("generating IR")
+    log.info("generating IR and IR analysis")
 
-    ir_arch = ira(mdis.symbol_pool)
+    ir_arch = ir(mdis.symbol_pool)
+    ir_arch_a = ira(mdis.symbol_pool)
     ir_arch.blocs = {}
+    ir_arch_a.blocs = {}
     for ad, all_bloc in all_funcs_blocs.items():
         log.info("generating IR... %x" % ad)
         for b in all_bloc:
+            ir_arch_a.add_bloc(b)
             ir_arch.add_bloc(b)
 
+    log.info("Print blocs (without analyse)")
+    for label, bloc in ir_arch.blocs.iteritems():
+        print bloc
+
     log.info("Gen Graph... %x" % ad)
 
-    ir_arch.gen_graph()
+    log.info("Print blocs (with analyse)")
+    for label, bloc in ir_arch_a.blocs.iteritems():
+        print bloc
+    ir_arch_a.gen_graph()
 
     if args.simplify:
-        ir_arch.dead_simp()
+        ir_arch_a.dead_simp()
 
-    out = ir_arch.graph()
+    out = ir_arch_a.graph()
     open('graph_irflow.txt', 'w').write(out)