summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/register.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
commitdbec8e8af5f296f0b95cd9c07e7d96b1a4277137 (patch)
tree4c5a9307bc4f0c168911e86459de5a51baaac226 /src/arch/dalvik/register.c
parent56deaf395c65658102ef0111cfc072d65335331a (diff)
Redefined all existing kinds of Dalvik operands in a proper way.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@203 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/register.c')
-rw-r--r--src/arch/dalvik/register.c96
1 files changed, 18 insertions, 78 deletions
diff --git a/src/arch/dalvik/register.c b/src/arch/dalvik/register.c
index dd5a512..cf926d2 100644
--- a/src/arch/dalvik/register.c
+++ b/src/arch/dalvik/register.c
@@ -52,14 +52,11 @@ struct _GDalvikRegisterClass
#define MAX_REGNAME_LEN 8
-/* Construit la chaîne de caractères correspondant à l'opérande. */
-static void g_dalvik_register_to_string(const GDalvikRegister *, AsmSyntax, char [MAX_REGNAME_LEN], size_t *);
+/* Initialise la classe des registres Dalvik. */
+static void g_dalvik_register_class_init(GDalvikRegisterClass *);
-/* Ajoute du texte simple à un fichier ouvert en écriture. */
-static void g_dalvik_register_add_text(const GDalvikRegister *, GRenderingOptions *, MainRendering, FILE *);
-
-/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */
-static void g_dalvik_register_to_buffer(const GDalvikRegister *, GBufferLine *, GRenderingOptions *);
+/* Initialise une instance de registre Dalvik. */
+static void g_dalvik_register_init(GDalvikRegister *);
@@ -71,7 +68,7 @@ G_DEFINE_TYPE(GDalvikRegister, g_dalvik_register, G_TYPE_CONTENT_EXPORTER);
* *
* Paramètres : klass = classe à initialiser. *
* *
-* Description : Initialise la classe des lignes de représentation. *
+* Description : Initialise la classe des registres Dalvik. *
* *
* Retour : - *
* *
@@ -89,7 +86,7 @@ static void g_dalvik_register_class_init(GDalvikRegisterClass *klass)
* *
* Paramètres : reg = instance à initialiser. *
* *
-* Description : Initialise une instance de ligne de représentation. *
+* Description : Initialise une instance de registre Dalvik. *
* *
* Retour : - *
* *
@@ -99,12 +96,6 @@ static void g_dalvik_register_class_init(GDalvikRegisterClass *klass)
static void g_dalvik_register_init(GDalvikRegister *reg)
{
- GContentExporter *parent; /* Instance parente */
-
- parent = G_CONTENT_EXPORTER(reg);
-
- parent->add_text = (add_text_fc)g_dalvik_register_add_text;
- parent->export_buffer = (export_buffer_fc)g_dalvik_register_to_buffer;
}
@@ -166,12 +157,11 @@ bool g_dalvik_register_compare(const GDalvikRegister *a, const GDalvikRegister *
/******************************************************************************
* *
-* Paramètres : operand = opérande à transcrire. *
-* syntax = type de représentation demandée. *
-* key = description humaine du registre. [OUT] *
-* klen = nombre de caractères utilisés. [OUT] *
+* Paramètres : reg = registre à transcrire. *
+* line = ligne tampon où imprimer l'opérande donné. *
+* syntax = type de représentation demandée. *
* *
-* Description : Construit la chaîne de caractères correspondant à l'opérande.*
+* Description : Traduit un registre en version humainement lisible. *
* *
* Retour : - *
* *
@@ -179,78 +169,28 @@ bool g_dalvik_register_compare(const GDalvikRegister *a, const GDalvikRegister *
* *
******************************************************************************/
-static void g_dalvik_register_to_string(const GDalvikRegister *reg, AsmSyntax syntax, char key[MAX_REGNAME_LEN], size_t *klen)
+void g_dalvik_pool_operand_print(const GDalvikRegister *reg, GBufferLine *line, AsmSyntax syntax)
{
+ char key[MAX_REGNAME_LEN]; /* Mot clef principal */
+ size_t klen; /* Taille de ce mot clef */
+
switch (syntax)
{
case ASX_INTEL:
- *klen = snprintf(key, MAX_REGNAME_LEN, "v%hd", reg->index);
+ klen = snprintf(key, MAX_REGNAME_LEN, "v%hd", reg->index);
break;
case ASX_ATT:
- *klen = snprintf(key, MAX_REGNAME_LEN, "%%v%hd", reg->index);
+ klen = snprintf(key, MAX_REGNAME_LEN, "%%v%hd", reg->index);
break;
default:
- *klen = 0;
+ klen = 0;
break;
}
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : reg = registre X86 à transcrire. *
-* options = options de rendu. *
-* rendering = support effectif final des lignes de code. *
-* stream = flux ouvert en écriture. *
-* *
-* Description : Ajoute du texte simple à un fichier ouvert en écriture. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_dalvik_register_add_text(const GDalvikRegister *reg, GRenderingOptions *options, MainRendering rendering, FILE *stream)
-{
- char key[MAX_REGNAME_LEN]; /* Mot clef principal */
- size_t klen; /* Taille de ce mot clef */
-
- g_dalvik_register_to_string(reg, g_rendering_options_get_syntax(options), key, &klen);
-
- g_content_exporter_insert_text(G_CONTENT_EXPORTER(reg), stream,
- key, klen, RTT_REGISTER);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : reg = registre X86 à transcrire. *
-* buffer = espace où placer ledit contenu. *
-* options = options de rendu. *
-* *
-* Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_dalvik_register_to_buffer(const GDalvikRegister *reg, GBufferLine *buffer, GRenderingOptions *options)
-{
- char key[MAX_REGNAME_LEN]; /* Mot clef principal */
- size_t klen; /* Taille de ce mot clef */
-
- g_dalvik_register_to_string(reg, g_rendering_options_get_syntax(options), key, &klen);
-
- g_content_exporter_insert_into_buffer(G_CONTENT_EXPORTER(reg), buffer, BLC_ASSEMBLY,
- key, klen, RTT_REGISTER);
+ g_buffer_line_insert_text(line, BLC_ASSEMBLY, key, klen, RTT_REGISTER);
}