summaryrefslogtreecommitdiff
path: root/src/decomp/context.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2013-01-20 13:10:06 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2013-01-20 13:10:06 (GMT)
commit37fd2f1329c56078bc8a8b2fc955aa001c109c01 (patch)
tree71bcce9a3eaf6b7569d1f1d3e057752ae517ebde /src/decomp/context.h
parenta9bbd894bd25f7c2bb72fb7d4064b19377d90c6d (diff)
Took care of shared allocations between blocks when converting registers.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@326 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/decomp/context.h')
-rw-r--r--src/decomp/context.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/decomp/context.h b/src/decomp/context.h
index 94b3270..d1b1ac9 100644
--- a/src/decomp/context.h
+++ b/src/decomp/context.h
@@ -31,6 +31,7 @@
#include "instruction.h"
#include "../arch/archbase.h"
#include "../format/executable.h"
+#include "../analysis/blocks/raccess.h"
/**
@@ -74,6 +75,21 @@ void g_dec_context_set_info(GDecContext *, GBinRoutine *, GExeFormat *);
/* Fournit le format binaire associé au contexte. */
GExeFormat *g_dec_context_get_format(const GDecContext *);
+/* Définit la liste des registrés utilisés dans plusieurs blocs. */
+void g_dec_context_set_awaited(GDecContext *, GRAccessList *);
+
+/* Fournit la liste des registrés utilisés dans plusieurs blocs. */
+const GRAccessList *g_dec_context_get_awaited(const GDecContext *);
+
+/* Définit la liste des registrés déjà alloués et attendus. */
+void g_dec_context_set_shared_allocs(GDecContext *, GHashTable *);
+
+/* Fournit la liste des registrés déjà alloués et attendus. */
+GHashTable *g_dec_context_get_shared_allocs(const GDecContext *);
+
+/* Propage les registres alloués et attendus par la suite. */
+void g_dec_context_spread_allocated_shared_regs(GDecContext *, GDecContext *);
+
/* Fournit le premier élément de la liste des instructions. */
GDecInstruction *g_dec_context_get_decomp_instrs(const GDecContext *tx);
@@ -81,7 +97,7 @@ GDecInstruction *g_dec_context_get_decomp_instrs(const GDecContext *tx);
void g_dec_context_set_decomp_instrs(GDecContext *, GDecInstruction *);
/* Convertit un registre machine en un pseudo-registre. */
-GDecInstruction *g_dec_context_convert_register(GDecContext *, gpointer, bool);
+GDecInstruction *g_dec_context_convert_register(GDecContext *, gpointer, bool, vmpa_t);