diff options
| author | Camille Mougey <commial@gmail.com> | 2016-03-21 16:14:20 +0100 |
|---|---|---|
| committer | Camille Mougey <commial@gmail.com> | 2016-03-21 16:14:20 +0100 |
| commit | 786d97b5ac3d32090cb67a35c43c64eb34041ec7 (patch) | |
| tree | 5798beedfa52bb89dbd278e7585098537a011642 /example/ida/graph_ir.py | |
| parent | 22e01a8eae35096b38a9cb87018700e422cdd2d9 (diff) | |
| parent | c7167b49e4147e337b925564bacdb34b34069c72 (diff) | |
| download | miasm-786d97b5ac3d32090cb67a35c43c64eb34041ec7.tar.gz miasm-786d97b5ac3d32090cb67a35c43c64eb34041ec7.zip | |
Merge pull request #339 from serpilliere/new_depgraph_mod_fix01
New DependencyGraph algorithm
Diffstat (limited to 'example/ida/graph_ir.py')
| -rw-r--r-- | example/ida/graph_ir.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py index 4447cadd..188c8fa6 100644 --- a/example/ida/graph_ir.py +++ b/example/ida/graph_ir.py @@ -19,10 +19,11 @@ def color_irbloc(irbloc): lbl = '%s' % irbloc.label lbl = idaapi.COLSTR(lbl, idaapi.SCOLOR_INSN) o.append(lbl) - for i, expr in enumerate(irbloc.irs): - for e in expr: - s = expr2colorstr(ir_arch.arch.regs.all_regs_ids, e) - s = idaapi.COLSTR(s, idaapi.SCOLOR_INSN) + for assignblk in irbloc.irs: + for dst, src in sorted(assignblk.iteritems()): + dst_f = expr2colorstr(ir_arch.arch.regs.all_regs_ids, dst) + src_f = expr2colorstr(ir_arch.arch.regs.all_regs_ids, src) + s = idaapi.COLSTR("%s = %s" % (dst_f, src_f), idaapi.SCOLOR_INSN) o.append(' %s' % s) o.append("") o.pop() @@ -119,7 +120,7 @@ print hex(ad) ab = mdis.dis_multibloc(ad) print "generating graph" -open('asm_flow.dot', 'w').write(ab.graph.dot(label=True)) +open('asm_flow.dot', 'w').write(ab.dot()) print "generating IR... %x" % ad @@ -133,9 +134,11 @@ for b in ab: print "IR ok... %x" % ad for irb in ir_arch.blocs.values(): - for irs in irb.irs: - for i, expr in enumerate(irs): - irs[i] = ExprAff(expr_simp(expr.dst), expr_simp(expr.src)) + for assignblk in irb.irs: + for dst, src in assignblk.items(): + del(assignblk[dst]) + dst, src = expr_simp(dst), expr_simp(src) + assignblk[dst] = src out = ir_arch.graph.dot() open(os.path.join(tempfile.gettempdir(), 'graph.dot'), 'wb').write(out) |