summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/register.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-12-04 20:28:35 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-12-04 20:28:35 (GMT)
commit6c67ffbb6c8a8dfb7120a0dab82dadbbf8112e88 (patch)
tree98b5195a053d7de292f2caced14e3ecda5ec32a5 /src/arch/dalvik/register.c
parentf95598b68b98f6eda701f8f02bc09cb13f65fc72 (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.c73
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;
-
-}