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/pproc.c | |
parent | 33aa90b022e7d711a733ca7eb62c0b285f974317 (diff) |
Extended the compiler to transform all the new ARMv7 encoding definitions.
Diffstat (limited to 'tools/d2c/pproc.c')
-rw-r--r-- | tools/d2c/pproc.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/d2c/pproc.c b/tools/d2c/pproc.c index fb72774..ec397f3 100644 --- a/tools/d2c/pproc.c +++ b/tools/d2c/pproc.c @@ -38,6 +38,9 @@ struct _pre_processor string_exch *macros; /* Remplacements de chaînes */ size_t macros_count; /* Nombre de ces remplacements */ + const char **op_producers; /* Producteurs d'opérandes */ + size_t op_prod_count; /* Quantité de producteurs */ + }; @@ -238,3 +241,53 @@ const char *find_macro(const pre_processor *pp, const char *src) return result; } + + +/****************************************************************************** +* * +* Paramètres : pp = pré-processeur dont le contenu est à compléter. * +* func = fonction produisant un opérande final. * +* * +* Description : Mémorise une fonction comme produisant un opérateur final. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void register_as_operand_producer(pre_processor *pp, const char *func) +{ + pp->op_producers = (const char **)realloc(pp->op_producers, ++pp->op_prod_count * sizeof(const char **)); + + pp->op_producers[pp->op_prod_count - 1] = func; + +} + + +/****************************************************************************** +* * +* Paramètres : pp = pré-processeur dont le contenu est à consulter. * +* func = fonction dont la nature du résultat est recherchée. * +* * +* Description : Détermine si une fonction produit un opérande ou non. * +* * +* Retour : true si la fonction fournie produit un opérande final. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool is_operand_producer(const pre_processor *pp, const char *func) +{ + bool result; /* Bilan à retourner */ + size_t i; /* Boucle de parcours */ + + result = false; + + for (i = 0; i < pp->op_prod_count && !result; i++) + result = (strcmp(pp->op_producers[i], func) == 0); + + return result; + +} |