diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2013-01-10 22:47:37 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2013-01-10 22:47:37 (GMT) |
commit | 221bcaeeb06415d501f9abbb9bc4b7d8339af1fe (patch) | |
tree | 243a1709589d3733d6525b0a143ecf0c539caae7 /src/analysis/block.c | |
parent | c455057e634b30c3214a49db009bad5fd0c631ff (diff) |
Simplified the decompilation process by using links between basic blocks.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@322 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/block.c')
-rw-r--r-- | src/analysis/block.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/analysis/block.c b/src/analysis/block.c index 62b56ab..1ec9804 100644 --- a/src/analysis/block.c +++ b/src/analysis/block.c @@ -131,6 +131,9 @@ static void g_instr_block_init(GInstrBlock *block) static void g_instr_block_dispose(GInstrBlock *block) { + if (block->links_block != NULL) + g_object_unref(G_OBJECT(block->links_block)); + G_OBJECT_CLASS(g_instr_block_parent_class)->dispose(G_OBJECT(block)); } @@ -215,3 +218,46 @@ void g_instr_block_list_all_blocks(const GInstrBlock *block, GInstrBlock ***list block->list_blocks(block, list, count); } + + +/****************************************************************************** +* * +* Paramètres : block = bloc d'instructions à mettre à jour. * +* links = bloc contenant les blocs liés au bloc. * +* * +* Description : Définit l'ensemble contenant les blocs liés. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_instr_block_set_links_block(GInstrBlock *block, GInstrBlock *links) +{ + if (block->links_block != NULL) + g_object_unref(G_OBJECT(block->links_block)); + + g_object_ref(G_OBJECT(links)); + block->links_block = links; + +} + + +/****************************************************************************** +* * +* Paramètres : block = bloc d'instructions à mettre à jour. * +* * +* Description : Fournit l'ensemble contenant les blocs liés. * +* * +* Retour : Bloc contenant les blocs liés au bloc. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GInstrBlock *g_instr_block_get_links_block(const GInstrBlock *block) +{ + return block->links_block; + +} |