diff options
Diffstat (limited to 'tools/d2c/spec.c')
-rw-r--r-- | tools/d2c/spec.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/tools/d2c/spec.c b/tools/d2c/spec.c index 0a47b72..1d91fed 100644 --- a/tools/d2c/spec.c +++ b/tools/d2c/spec.c @@ -300,13 +300,15 @@ decoding_rules *get_rules_in_encoding_spec(const encoding_spec *spec) bool write_encoding_spec_disass(const encoding_spec *spec, int fd, const char *arch, const char *subarch, const char *ins, const char *details, unsigned int wide, const pre_processor *pp) { bool result; /* Bilan à retourner */ + bool bad_exit; /* Ajout d'une sortie d'échec ?*/ char *keyword; /* Mot clef appelable en code */ bool quick_exit; /* Inclusion de sortie rapide ?*/ - bool bad_exit; /* Ajout d'une sortie d'échec ?*/ const char *new_ins; /* Nouvelle définition de nom */ result = true; + bad_exit = false; + keyword = make_callable(ins, false); dprintf(fd, "\tGArchInstruction *%s_decode_%s%s_%s%u(uint%u_t _raw)\n", @@ -320,8 +322,12 @@ bool write_encoding_spec_disass(const encoding_spec *spec, int fd, const char *a result &= mark_syntax_items(spec->syntax, spec->bits, spec->conversions); + result &= mark_decoding_rules(spec->rules, spec->bits, spec->conversions); + result &= declare_used_bits_fields(spec->bits, fd, wide); + result &= declare_used_intermediate_conversions(spec->conversions, fd, spec->bits, pp, wide); + result &= declare_syntax_items(spec->syntax, fd, spec->bits, spec->conversions, wide); dprintf(fd, "\n"); @@ -336,7 +342,7 @@ bool write_encoding_spec_disass(const encoding_spec *spec, int fd, const char *a result &= define_used_bits_fields(spec->bits, fd); - dprintf(fd, "\n"); + result &= define_used_intermediate_conversions(spec->conversions, fd, arch, spec->bits, pp, &bad_exit); /* Inclusion des éventuelles règles */ @@ -368,8 +374,6 @@ bool write_encoding_spec_disass(const encoding_spec *spec, int fd, const char *a /* Création des opérandes */ - bad_exit = false; - result &= define_syntax_items(spec->syntax, fd, arch, spec->bits, spec->conversions, pp, &bad_exit); /* Conclusion de la procédure */ |