summaryrefslogtreecommitdiff
path: root/plugins/arm/v7/operands
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-04-02 11:58:42 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-04-02 12:39:30 (GMT)
commit1db4ef323b7a76093356ae76268132f3760e1631 (patch)
treefec36ee0ec1b6b2010b62ca4177edca0e31e2114 /plugins/arm/v7/operands
parent1bc80837dde03a32b5ab185067f7bd4c499a9850 (diff)
Rewritten the whole instruction definition format.
Diffstat (limited to 'plugins/arm/v7/operands')
-rw-r--r--plugins/arm/v7/operands/maccess.c24
-rw-r--r--plugins/arm/v7/operands/reglist.c38
-rw-r--r--plugins/arm/v7/operands/reglist.h5
3 files changed, 24 insertions, 43 deletions
diff --git a/plugins/arm/v7/operands/maccess.c b/plugins/arm/v7/operands/maccess.c
index 043d801..24d5393 100644
--- a/plugins/arm/v7/operands/maccess.c
+++ b/plugins/arm/v7/operands/maccess.c
@@ -36,8 +36,8 @@ struct _GArmV7MAccessOperand
GArchOperand *base; /* Base de l'accès en mémoire */
GArchOperand *offset; /* Décalage pour l'adresse */
- GArchOperand *shift; /* Décalage pour le décalage */
- bool not_post_indexed; /* Positio du décalage */
+ GArchOperand *shift; /* Décalage pour le décallage */
+ bool post_indexed; /* Position du décalage */
bool write_back; /* Mise à jour de la base */
};
@@ -194,7 +194,7 @@ static int g_armv7_maccess_operand_compare(const GArmV7MAccessOperand *a, const
result = sort_pointer(a->shift, b->shift, (__compar_fn_t)g_arch_operand_compare);
if (result != 0) goto gamoc_done;
- result = sort_boolean(a->not_post_indexed, b->not_post_indexed);
+ result = sort_boolean(a->post_indexed, b->post_indexed);
if (result != 0) goto gamoc_done;
result = sort_boolean(a->write_back, b->write_back);
@@ -226,7 +226,7 @@ static void g_armv7_maccess_operand_print(const GArmV7MAccessOperand *operand, G
g_arch_operand_print(operand->base, line, syntax);
- if (!operand->not_post_indexed)
+ if (operand->post_indexed)
g_buffer_line_append_text(line, BLC_ASSEMBLY, "]", 1, RTT_HOOK, NULL);
if (operand->offset != NULL)
@@ -247,7 +247,7 @@ static void g_armv7_maccess_operand_print(const GArmV7MAccessOperand *operand, G
}
- if (operand->not_post_indexed)
+ if (!operand->post_indexed)
g_buffer_line_append_text(line, BLC_ASSEMBLY, "]", 1, RTT_HOOK, NULL);
if (operand->write_back)
@@ -258,11 +258,19 @@ static void g_armv7_maccess_operand_print(const GArmV7MAccessOperand *operand, G
/******************************************************************************
* *
+<<<<<<< HEAD
* Paramètres : base = représente le registre de la base d'accès. *
* offset = détermine le décalage entre l'adresse et la base. *
* shift = opération de décalage pour jouer sur le décalage. *
* indexed = précise la forme donnée au décalage à appliquer. *
* wback = indique une mise à jour de la base après usage. *
+=======
+* Paramètres : base = représente le registre de la base d'accès. *
+* offset = détermine le décallage entre l'adresse et la base. *
+* shift = opération de décallage pour jouer sur le décallage. *
+* post = précise la forme donnée au décallage à appliquer. *
+* wback = indique une mise à jour de la base après usage. *
+>>>>>>> Rewritten the whole instruction definition format.
* *
* Description : Crée un accès à la mémoire depuis une base et un décalage. *
* *
@@ -272,7 +280,7 @@ static void g_armv7_maccess_operand_print(const GArmV7MAccessOperand *operand, G
* *
******************************************************************************/
-GArchOperand *g_armv7_maccess_operand_new(GArchOperand *base, GArchOperand *offset, GArchOperand *shift, bool indexed, bool wback)
+GArchOperand *g_armv7_maccess_operand_new(GArchOperand *base, GArchOperand *offset, GArchOperand *shift, bool post, bool wback)
{
GArmV7MAccessOperand *result; /* Structure à retourner */
@@ -282,7 +290,7 @@ GArchOperand *g_armv7_maccess_operand_new(GArchOperand *base, GArchOperand *offs
result->offset = offset;
result->shift = shift;
- result->not_post_indexed = indexed;
+ result->post_indexed = post;
result->write_back = wback;
return G_ARCH_OPERAND(result);
@@ -361,7 +369,7 @@ GArchOperand *g_armv7_maccess_operand_get_shift(const GArmV7MAccessOperand *oper
bool g_armv7_maccess_operand_is_post_indexed(const GArmV7MAccessOperand *operand)
{
- return !operand->not_post_indexed;
+ return operand->post_indexed;
}
diff --git a/plugins/arm/v7/operands/reglist.c b/plugins/arm/v7/operands/reglist.c
index 00c3b98..1f56249 100644
--- a/plugins/arm/v7/operands/reglist.c
+++ b/plugins/arm/v7/operands/reglist.c
@@ -255,7 +255,7 @@ static void g_armv7_reglist_operand_print(const GArmV7RegListOperand *operand, G
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : selected = masque de bits pour les registres à intégrer. *
* *
* Description : Crée une liste vierge de registres ARM. *
* *
@@ -265,48 +265,24 @@ static void g_armv7_reglist_operand_print(const GArmV7RegListOperand *operand, G
* *
******************************************************************************/
-GArchOperand *g_armv7_reglist_operand_new(void)
-{
- GArchOperand *result; /* Structure à retourner */
-
- result = g_object_new(G_TYPE_ARMV7_REGLIST_OPERAND, NULL);
-
- return G_ARCH_OPERAND(result);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : operand = liste de registres à compléter. *
-* selected = masque de bits pour les registres à intégrer. *
-* *
-* Description : Remplit une liste de registres de registres ARM. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool g_armv7_reglist_load_registers(GArmV7RegListOperand *operand, uint32_t selected)
+GArchOperand *g_armv7_reglist_operand_new(uint16_t selected)
{
+ GArmV7RegListOperand *result; /* Structure à retourner */
uint8_t i; /* Boucle de parcours */
GArmV7Register *reg; /* Nouveau registre à intégrer */
- for (i = 18; i < 32; i++)
- if (selected & (1 << i)) return false;
+ result = g_object_new(G_TYPE_ARMV7_REGLIST_OPERAND, NULL);
- for (i = 0; i < 18; i++)
+ for (i = 0; i < 16; i++)
{
if ((selected & (1 << i)) == 0) continue;
reg = g_armv7_register_new(i);
- g_armv7_reglist_add_register(operand, reg);
+ g_armv7_reglist_add_register(result, reg);
}
- return true;
+ return G_ARCH_OPERAND(result);
}
diff --git a/plugins/arm/v7/operands/reglist.h b/plugins/arm/v7/operands/reglist.h
index 60b78a6..82f1a60 100644
--- a/plugins/arm/v7/operands/reglist.h
+++ b/plugins/arm/v7/operands/reglist.h
@@ -55,10 +55,7 @@ typedef struct _GArmV7RegListOperandClass GArmV7RegListOperandClass;
GType g_armv7_reglist_operand_get_type(void);
/* Crée une liste vierge de registres ARM. */
-GArchOperand *g_armv7_reglist_operand_new(void);
-
-/* Remplit une liste de registres de registres ARM. */
-bool g_armv7_reglist_load_registers(GArmV7RegListOperand *, uint32_t);
+GArchOperand *g_armv7_reglist_operand_new(uint16_t);
/* Ajoute un registre à une liste de registres ARM. */
void g_armv7_reglist_add_register(GArmV7RegListOperand *, GArmV7Register *);