diff options
Diffstat (limited to 'tools/d2c/spec.c')
-rw-r--r-- | tools/d2c/spec.c | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/tools/d2c/spec.c b/tools/d2c/spec.c index 9990881..b56c6aa 100644 --- a/tools/d2c/spec.c +++ b/tools/d2c/spec.c @@ -33,22 +33,6 @@ - - -#define get_raw_bitfield_name(bf) "" - - - - - -#define get_syntax_item_name(si) "" - - - - - - - /* Mémorisation d'un encodage complet */ struct _encoding_spec { @@ -59,17 +43,13 @@ struct _encoding_spec coding_bits *bits; /* Encodage des bits associés */ asm_syntax *syntax; /* Calligraphe d'assemblage */ conv_list *conversions; /* Conversions des données */ + instr_hooks *hooks; /* Fonctions complémentaires */ decoding_rules *rules; /* Règles supplémentaires */ }; - - - - - /****************************************************************************** * * * Paramètres : - * @@ -91,6 +71,7 @@ encoding_spec *create_encoding_spec(void) result->bits = create_coding_bits(); result->syntax = create_asm_syntax(); result->conversions = create_conv_list(); + result->hooks = create_instr_hooks(); result->rules = create_decoding_rules(); return result; @@ -115,6 +96,7 @@ void delete_encoding_spec(encoding_spec *spec) delete_coding_bits(spec->bits); delete_asm_syntax(spec->syntax); delete_conv_list(spec->conversions); + delete_instr_hooks(spec->hooks); delete_decoding_rules(spec->rules); free(spec); @@ -226,6 +208,25 @@ conv_list *get_conversions_in_encoding_spec(const encoding_spec *spec) * * * Paramètres : spec = spécification d'encodage à consulter. * * * +* Description : Fournit la liste des fonctions à lier à une instruction. * +* * +* Retour : Structure assurant la gestion des fonctions de conversion. * +* * +* Remarques : - * +* * +******************************************************************************/ + +instr_hooks *get_hooks_in_encoding_spec(const encoding_spec *spec) +{ + return spec->hooks; + +} + + +/****************************************************************************** +* * +* Paramètres : spec = spécification d'encodage à consulter. * +* * * Description : Fournit un ensemble de règles supplémentaires éventuel. * * * * Retour : Structure assurant la gestion de ces règles. * @@ -313,6 +314,10 @@ bool write_encoding_spec_disass(const encoding_spec *spec, int fd, const char *a dprintf(fd, "\n"); + /* Inscriptions des éventuelles fonctions à lier */ + + result &= write_hook_functions(spec->hooks, fd); + /* Création des opérandes */ result &= define_syntax_items(spec->syntax, fd, arch, spec->bits, spec->conversions, pp); |