diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-05-22 15:43:43 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-05-22 15:43:43 (GMT) |
commit | 7577eadd4e871d467f747c4927a1b1984d6a7606 (patch) | |
tree | e72a2fd5c1619e60402a678b0559079ed267eab0 /tools/d2c/spec.c | |
parent | 33aa90b022e7d711a733ca7eb62c0b285f974317 (diff) |
Extended the compiler to transform all the new ARMv7 encoding definitions.
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 */ |