summaryrefslogtreecommitdiff
path: root/src/decomp/expr/pseudo.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2013-01-27 22:03:31 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2013-01-27 22:03:31 (GMT)
commit5c7ea8e2137e4e5bb2887de0d1ffd8a0b277636e (patch)
tree86d788e395f009c773cccd4310d56477c55552b5 /src/decomp/expr/pseudo.c
parent7f35f8d2f211fdf087252ede7665e9c81f35cdc7 (diff)
Reduced the quantity of used variables in decompiled code.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@332 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/decomp/expr/pseudo.c')
-rw-r--r--src/decomp/expr/pseudo.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/decomp/expr/pseudo.c b/src/decomp/expr/pseudo.c
index 9da76e7..7c7ba71 100644
--- a/src/decomp/expr/pseudo.c
+++ b/src/decomp/expr/pseudo.c
@@ -38,6 +38,8 @@ struct _GPseudoRegister
{
GDecExpression parent; /* A laisser en premier */
+ PseudoRegUsage usage; /* Type d'utilisation attendue */
+
char *name; /* Désignation générale */
size_t index; /* Position dans l'ensemble */
GBinVariable *var; /* Variable plus précise */
@@ -112,7 +114,7 @@ static void g_pseudo_register_init(GPseudoRegister *reg)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : usage = précision quant à l'usage du pseudo-registre à créer.*
* *
* Description : Assigne le contenu d'une expression dans une autre. *
* *
@@ -122,12 +124,14 @@ static void g_pseudo_register_init(GPseudoRegister *reg)
* *
******************************************************************************/
-GDecInstruction *g_pseudo_register_new(void)
+GDecInstruction *g_pseudo_register_new(PseudoRegUsage usage)
{
GPseudoRegister *result; /* Pseudo-registre à renvoyer */
result = g_object_new(G_TYPE_PSEUDO_REGISTER, NULL);
+ result->usage = usage;
+
return G_DEC_INSTRUCTION(result);
}
@@ -135,6 +139,25 @@ GDecInstruction *g_pseudo_register_new(void)
/******************************************************************************
* *
+* Paramètres : reg = pseudo-registre à venir consulter. *
+* *
+* Description : Indique l'usage attendu du pseudo-registre consulté. *
+* *
+* Retour : Utilité du pseudo-registre en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+PseudoRegUsage g_pseudo_register_get_usage(const GPseudoRegister *reg)
+{
+ return reg->usage;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : reg = expression à transcrire en version humaine. *
* buffer = tampon où doit se réaliser l'insertion. *
* line = ligne d'impression prête à emploi ou NULL. *