diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-04-02 11:58:42 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-04-02 12:39:30 (GMT) |
commit | 1db4ef323b7a76093356ae76268132f3760e1631 (patch) | |
tree | fec36ee0ec1b6b2010b62ca4177edca0e31e2114 /plugins/arm/v7/operands | |
parent | 1bc80837dde03a32b5ab185067f7bd4c499a9850 (diff) |
Rewritten the whole instruction definition format.
Diffstat (limited to 'plugins/arm/v7/operands')
-rw-r--r-- | plugins/arm/v7/operands/maccess.c | 24 | ||||
-rw-r--r-- | plugins/arm/v7/operands/reglist.c | 38 | ||||
-rw-r--r-- | plugins/arm/v7/operands/reglist.h | 5 |
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 *); |