diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-05-10 20:44:30 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-05-10 20:44:30 (GMT) |
commit | 90e0f7ac04c1622f226dda57a3329b6fe98307e8 (patch) | |
tree | 68313927f67ed3f1d903562e1760d32a902f775a /src/arch | |
parent | 8e76324b01e5b4979f346f0bc8c84372477a3d38 (diff) |
Removed the link to binary content used for printing from instructions.
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/instruction-int.h | 3 | ||||
-rw-r--r-- | src/arch/instruction.c | 46 | ||||
-rw-r--r-- | src/arch/instruction.h | 3 | ||||
-rw-r--r-- | src/arch/raw.c | 7 | ||||
-rw-r--r-- | src/arch/undefined.c | 7 |
5 files changed, 21 insertions, 45 deletions
diff --git a/src/arch/instruction-int.h b/src/arch/instruction-int.h index b7bd5f3..b62bba7 100644 --- a/src/arch/instruction-int.h +++ b/src/arch/instruction-int.h @@ -38,7 +38,7 @@ typedef const char * (* get_instruction_encoding_fc) (const GArchInstruction *); typedef const char * (* get_instruction_keyword_fc) (GArchInstruction *, AsmSyntax ); /* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -typedef GBufferLine * (* print_instruction_fc) (const GArchInstruction *, GBufferLine *, size_t, size_t); +typedef GBufferLine * (* print_instruction_fc) (const GArchInstruction *, GBufferLine *, size_t, size_t, const GBinContent *); /* Liste les registres lus et écrits par l'instruction. */ typedef void (* get_instruction_rw_regs_fc) (const GArchInstruction *, GArchRegister ***, size_t *, GArchRegister ***, size_t *); @@ -52,7 +52,6 @@ struct _GArchInstruction const instr_hook_fc *hooks; /* Traitements complémentaires */ - const GBinContent *content; /* Contenu binaire global */ mrange_t range; /* Emplacement en mémoire */ flat_array_t *operands; /* Liste des opérandes */ diff --git a/src/arch/instruction.c b/src/arch/instruction.c index 807bbbb..dd5b019 100644 --- a/src/arch/instruction.c +++ b/src/arch/instruction.c @@ -71,10 +71,10 @@ static int g_arch_instruction_contains_addr(const GArchInstruction *, const vmpa static BufferLineFlags g_arch_instruction_get_flags2(const GArchInstruction *, size_t, size_t); /* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void _g_arch_instruction_print(GArchInstruction *, GBufferLine *, size_t, size_t); +static void _g_arch_instruction_print(GArchInstruction *, GBufferLine *, size_t, size_t, const GBinContent *); /* Imprime dans une ligne de rendu le contenu représenté. */ -static void g_arch_instruction_print(GArchInstruction *, GBufferLine *, size_t, size_t); +static void g_arch_instruction_print(GArchInstruction *, GBufferLine *, size_t, size_t, const GBinContent *); @@ -191,9 +191,6 @@ static void g_arch_instruction_generator_interface_init(GLineGeneratorInterface static void g_arch_instruction_dispose(GArchInstruction *instr) { - if (instr->content != NULL) - g_object_unref(G_OBJECT(instr->content)); - G_OBJECT_CLASS(g_arch_instruction_parent_class)->dispose(G_OBJECT(instr)); } @@ -328,27 +325,6 @@ void g_arch_instruction_call_hook(GArchInstruction *instr, InstrProcessHook type /****************************************************************************** * * * Paramètres : instr = instruction quelconque à modifier. * -* content = contenu binaire global à référencer. * -* * -* Description : Note le contenu du sein duquel l'instruction est issue. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_arch_instruction_set_global_content(GArchInstruction *instr, const GBinContent *content) -{ - g_object_ref(G_OBJECT(content)); - instr->content = content; - -} - - -/****************************************************************************** -* * -* Paramètres : instr = instruction quelconque à modifier. * * address = adresse virtuelle et/ou position physique. * * length = taille de l'instruction. * * * @@ -1155,6 +1131,7 @@ static BufferLineFlags g_arch_instruction_get_flags2(const GArchInstruction *ins * msize = taille idéale des positions et adresses; * * content = contenu binaire global à venir lire. * * syntax = type de représentation demandée. * +* content = éventuel contenu binaire brut à imprimer. * * * * Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * * * @@ -1164,7 +1141,7 @@ static BufferLineFlags g_arch_instruction_get_flags2(const GArchInstruction *ins * * ******************************************************************************/ -static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line, size_t index, size_t repeat) +static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content) { const char *key; /* Mot clef principal */ size_t klen; /* Taille de ce mot clef */ @@ -1174,7 +1151,7 @@ static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line g_buffer_line_fill_vmpa(line, get_mrange_addr(&instr->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); - g_buffer_line_fill_content(line, instr->content, &instr->range, VMPA_NO_PHYSICAL); + g_buffer_line_fill_content(line, content, &instr->range, VMPA_NO_PHYSICAL); /* Instruction proprement dite */ @@ -1214,10 +1191,11 @@ static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line /****************************************************************************** * * -* Paramètres : instr = générateur à utiliser pour l'impression. * -* line = ligne de rendu à compléter. * -* index = indice de cette même ligne dans le tampon global. * -* repeat = indice d'utilisations successives du générateur. * +* Paramètres : instr = générateur à utiliser pour l'impression. * +* line = ligne de rendu à compléter. * +* index = indice de cette même ligne dans le tampon global. * +* repeat = indice d'utilisations successives du générateur. * +* content = éventuel contenu binaire brut à imprimer. * * * * Description : Imprime dans une ligne de rendu le contenu représenté. * * * @@ -1227,8 +1205,8 @@ static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line * * ******************************************************************************/ -static void g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line, size_t index, size_t repeat) +static void g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content) { - G_ARCH_INSTRUCTION_GET_CLASS(instr)->print(instr, line, index, repeat); + G_ARCH_INSTRUCTION_GET_CLASS(instr)->print(instr, line, index, repeat, content); } diff --git a/src/arch/instruction.h b/src/arch/instruction.h index 64b8dd5..f508c35 100644 --- a/src/arch/instruction.h +++ b/src/arch/instruction.h @@ -107,9 +107,6 @@ void g_arch_instruction_set_hooks(GArchInstruction *, const instr_hook_fc [IPH_C /* Complète un désassemblage accompli pour une instruction. */ void g_arch_instruction_call_hook(GArchInstruction *, InstrProcessHook, GArchProcessor *, GProcContext *, GExeFormat *); -/* Note le contenu du sein duquel l'instruction est issue. */ -void g_arch_instruction_set_global_content(GArchInstruction *, const GBinContent *); - /* Définit la localisation d'une instruction. */ void g_arch_instruction_set_range(GArchInstruction *, const mrange_t *); diff --git a/src/arch/raw.c b/src/arch/raw.c index 9cd77de..4a82aef 100644 --- a/src/arch/raw.c +++ b/src/arch/raw.c @@ -78,7 +78,7 @@ static const char *g_raw_instruction_get_encoding(const GRawInstruction *); static const char *g_raw_instruction_get_keyword(const GRawInstruction *, AsmSyntax); /* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void g_raw_instruction_print(GRawInstruction *, GBufferLine *, size_t, size_t); +static void g_raw_instruction_print(GRawInstruction *, GBufferLine *, size_t, size_t, const GBinContent *); @@ -480,6 +480,7 @@ static const char *g_raw_instruction_get_keyword(const GRawInstruction *instr, A * msize = taille idéale des positions et adresses; * * content = contenu binaire global à venir lire. * * syntax = type de représentation demandée. * +* content = éventuel contenu binaire brut à imprimer. * * * * Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * * * @@ -489,7 +490,7 @@ static const char *g_raw_instruction_get_keyword(const GRawInstruction *instr, A * * ******************************************************************************/ -static void g_raw_instruction_print(GRawInstruction *instr, GBufferLine *line, size_t index, size_t repeat) +static void g_raw_instruction_print(GRawInstruction *instr, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content) { GArchInstruction *base; /* Autre version de l'instance */ phys_t max_displayed_len; /* Quantité de code affichée */ @@ -525,7 +526,7 @@ static void g_raw_instruction_print(GRawInstruction *instr, GBufferLine *line, s max_displayed_len /= g_arch_instruction_count_operands(base); } - g_buffer_line_fill_content(line, base->content, &base->range, max_displayed_len); + g_buffer_line_fill_content(line, content, &base->range, max_displayed_len); /* Zone du code d'assemblage */ diff --git a/src/arch/undefined.c b/src/arch/undefined.c index 8741c43..3c76a09 100644 --- a/src/arch/undefined.c +++ b/src/arch/undefined.c @@ -70,7 +70,7 @@ static const char *g_undef_instruction_get_encoding(const GUndefInstruction *); static const char *g_undef_instruction_get_keyword(const GUndefInstruction *, AsmSyntax); /* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */ -static void g_undef_instruction_print(GUndefInstruction *, GBufferLine *, size_t, size_t); +static void g_undef_instruction_print(GUndefInstruction *, GBufferLine *, size_t, size_t, const GBinContent *); @@ -267,6 +267,7 @@ const char *g_undef_instruction_get_keyword(const GUndefInstruction *instr, AsmS * msize = taille idéale des positions et adresses; * * content = contenu binaire global à venir lire. * * syntax = type de représentation demandée. * +* content = éventuel contenu binaire brut à imprimer. * * * * Description : Ajoute à un tampon GLib le contenu de l'instance spécifiée. * * * @@ -276,7 +277,7 @@ const char *g_undef_instruction_get_keyword(const GUndefInstruction *instr, AsmS * * ******************************************************************************/ -static void g_undef_instruction_print(GUndefInstruction *instr, GBufferLine *line, size_t index, size_t repeat) +static void g_undef_instruction_print(GUndefInstruction *instr, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content) { GArchInstruction *base; /* Version de base */ const char *key; /* Mot clef principal */ @@ -286,7 +287,7 @@ static void g_undef_instruction_print(GUndefInstruction *instr, GBufferLine *lin g_buffer_line_fill_vmpa(line, get_mrange_addr(&base->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); - g_buffer_line_fill_content(line, base->content, &base->range, VMPA_NO_PHYSICAL); + g_buffer_line_fill_content(line, content, &base->range, VMPA_NO_PHYSICAL); /* Instruction proprement dite */ |