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/grammar.y | |
parent | 33aa90b022e7d711a733ca7eb62c0b285f974317 (diff) |
Extended the compiler to transform all the new ARMv7 encoding definitions.
Diffstat (limited to 'tools/d2c/grammar.y')
-rw-r--r-- | tools/d2c/grammar.y | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/tools/d2c/grammar.y b/tools/d2c/grammar.y index ec7da60..063d22b 100644 --- a/tools/d2c/grammar.y +++ b/tools/d2c/grammar.y @@ -138,6 +138,7 @@ YY_DECL; %token COPYRIGHT %token TITLE %token INS_NAME INS_SEP INS_DETAILS +%token DESC %token ENCODING %token TYPE NUMBER @@ -167,10 +168,12 @@ YY_DECL; input : name encodings { if (!dump_all_routines_using_coder(coder)) YYABORT; } + | name desc encodings { if (!dump_all_routines_using_coder(coder)) YYABORT; } name : COPYRIGHT TITLE INS_NAME { save_notes_for_coder(coder, $1, $3, '\0', NULL); } | COPYRIGHT TITLE INS_NAME INS_SEP INS_DETAILS { save_notes_for_coder(coder, $1, $3, $4, $5); } +desc : DESC RAW_LINE encodings : /* empty */ | encoding encodings @@ -273,7 +276,8 @@ static void show_usage(const char *argv0) printf("\t-a | --arch <string>\t\tDefine the archicture to handle.\n"); printf("\t-H | --header <string>\t\tSet the base of the #ifndef / #define game.\n"); printf("\t-e | --encoding <none|string>\tDefine encoding prefixes for files.\n"); - printf("\t-m | --macro <string>\t\tRegister some conversion functions.\n"); + printf("\t-M | --macro <string>\t\tRegister some conversion functions.\n"); + printf("\t-n | --operand <string>\t\tRegister a function producing final operands.\n"); printf("\t-p | --prefix <string>\t\tDefine a prefix to format operand type constants (see -t).\n"); printf("\n"); @@ -375,6 +379,7 @@ int main(int argc, char **argv) { "header", required_argument, NULL, 'H' }, { "encoding", required_argument, NULL, 'e' }, { "macro", required_argument, NULL, 'M' }, + { "operand", required_argument, NULL, 'n' }, { "prefix", required_argument, NULL, 'p' }, { NULL, 0, NULL, 0 } @@ -391,7 +396,7 @@ int main(int argc, char **argv) while (!has_error) { - ret = getopt_long(argc, argv, "hi:t:d:a:H:e:M:p:", long_options, &index); + ret = getopt_long(argc, argv, "hi:t:d:a:H:e:M:n:p:", long_options, &index); if (ret == -1) break; switch (ret) @@ -456,6 +461,10 @@ int main(int argc, char **argv) break; + case 'n': + register_as_operand_producer(get_coder_pre_proc(coder), optarg); + break; + case 'p': set_coder_const_prefix(coder, optarg); break; |