diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-12-04 20:28:35 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-12-04 20:28:35 (GMT) |
commit | 6c67ffbb6c8a8dfb7120a0dab82dadbbf8112e88 (patch) | |
tree | 98b5195a053d7de292f2caced14e3ecda5ec32a5 /src/arch/dalvik/register.c | |
parent | f95598b68b98f6eda701f8f02bc09cb13f65fc72 (diff) |
Listed accesses to registers.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@294 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/register.c')
-rw-r--r-- | src/arch/dalvik/register.c | 73 |
1 files changed, 20 insertions, 53 deletions
diff --git a/src/arch/dalvik/register.c b/src/arch/dalvik/register.c index b2023b5..db4186a 100644 --- a/src/arch/dalvik/register.c +++ b/src/arch/dalvik/register.c @@ -27,14 +27,14 @@ #include <stdio.h> -#include "../operand-int.h" +#include "../register-int.h" /* Représentation d'un registre Dalvik (instance) */ struct _GDalvikRegister { - GArchOperand parent; /* Instance parente */ + GArchRegister parent; /* Instance parente */ uint16_t index; /* Indice du registre */ @@ -44,7 +44,7 @@ struct _GDalvikRegister /* Représentation d'un registre Dalvik (classe) */ struct _GDalvikRegisterClass { - GArchOperandClass parent; /* Classe parente */ + GArchRegisterClass parent; /* Classe parente */ }; @@ -61,7 +61,7 @@ static void g_dalvik_register_init(GDalvikRegister *); /* Indique le type défini pour une représentation d'un registre Dalvik. */ -G_DEFINE_TYPE(GDalvikRegister, g_dalvik_register, G_TYPE_ARCH_OPERAND); +G_DEFINE_TYPE(GDalvikRegister, g_dalvik_register, G_TYPE_ARCH_REGISTER); /****************************************************************************** @@ -96,6 +96,12 @@ static void g_dalvik_register_class_init(GDalvikRegisterClass *klass) static void g_dalvik_register_init(GDalvikRegister *reg) { + GArchRegister *base; /* Version basique */ + + base = G_ARCH_REGISTER(reg); + + base->compare = (reg_compare_fc)g_dalvik_register_compare; + base->print = (reg_print_fc)g_dalvik_register_print; } @@ -157,19 +163,18 @@ uint16_t g_dalvik_register_get_index(const GDalvikRegister *reg) * * ******************************************************************************/ -bool g_dalvik_register_compare(const GDalvikRegister *a, const GDalvikRegister *b) +int g_dalvik_register_compare(const GDalvikRegister *a, const GDalvikRegister *b) { - /* FIXME : GCC (Debian 4.4.5-4) trouble ? */ - - if (a == NULL) - printf("Alerte :: %hd & %hd\n", a->index, b->index); + int result; /* Bilan à retourner */ - /* - printf("Compare :: %p & %p\n", a, b); - printf("Compare :: %hd & %hd\n", a->index, b->index); - */ + if (a->index < b->index) + result = -1; + else if (a->index < b->index) + result = 1; + else + result = 0; - return (a->index == b->index); + return result; } @@ -188,7 +193,7 @@ bool g_dalvik_register_compare(const GDalvikRegister *a, const GDalvikRegister * * * ******************************************************************************/ -void g_dalvik_pool_operand_print(const GDalvikRegister *reg, GBufferLine *line, AsmSyntax syntax) +void g_dalvik_register_print(const GDalvikRegister *reg, GBufferLine *line, AsmSyntax syntax) { char key[MAX_REGNAME_LEN]; /* Mot clef principal */ size_t klen; /* Taille de ce mot clef */ @@ -212,41 +217,3 @@ void g_dalvik_pool_operand_print(const GDalvikRegister *reg, GBufferLine *line, g_buffer_line_insert_text(line, BLC_ASSEMBLY, key, klen, RTT_REGISTER); } - - -/****************************************************************************** -* * -* Paramètres : reg = registre à consulter. * -* * -* Description : Indique si le registre correspond à ebp ou similaire. * -* * -* Retour : true si la correspondance est avérée, false sinon. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool g_dalvik_register_is_base_pointer(const GDalvikRegister *reg) -{ - return false; - -} - - -/****************************************************************************** -* * -* Paramètres : reg = registre à consulter. * -* * -* Description : Indique si le registre correspond à esp ou similaire. * -* * -* Retour : true si la correspondance est avérée, false sinon. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool g_dalvik_register_is_stack_pointer(const GDalvikRegister *reg) -{ - return false; - -} |