summaryrefslogtreecommitdiff
path: root/tools/d2c/spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/d2c/spec.c')
-rw-r--r--tools/d2c/spec.c47
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);