removed the containing subdir
This commit is contained in:
41
lib/genbct.awk
Normal file
41
lib/genbct.awk
Normal file
@ -0,0 +1,41 @@
|
||||
# generate instruction dispatch table for VM.
|
||||
# qseawk -f genbct.awk moo-prv.h
|
||||
#
|
||||
# TODO: rewrite this script in moo itself.
|
||||
#
|
||||
|
||||
BEGIN {
|
||||
on = 0;
|
||||
for (i = 0; i < 255; i++) code_label[i] = "&&case_DEFAULT";
|
||||
}
|
||||
|
||||
/^enum moo_bcode_t$/ { on = 1; }
|
||||
|
||||
/^enum moo_bcode_t {$/ { on = 2; }
|
||||
|
||||
/^{$/ { if (on == 1) on = 2; else on = 0; }
|
||||
|
||||
/^};$/ { on = 0; }
|
||||
|
||||
on == 2 && match($0, /^[[:space:]]*BCODE_([[:alnum:]_]+)[[:space:]]*=[[:space:]]*(0x[[:xdigit:]]+)/, 1, sm) >= 1 {
|
||||
count = length(sm) \ 2;
|
||||
if (count == 2)
|
||||
{
|
||||
name = substr ($0, sm[1,"start"], sm[1,"length"]);
|
||||
code = substr ($0, sm[2,"start"], sm[2,"length"]);
|
||||
code_label[int(code)] = "&&case_BCODE_" name;
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
printf ("/* generated by genbct.awk */\n\n");
|
||||
|
||||
##printf ("\tstatic void* inst_jump_labels[] =\n");
|
||||
##printf ("\t{\n");
|
||||
for (i = 0; i < 255; i++)
|
||||
{
|
||||
printf ("\t\t/* %3d */ %s,\n", i, code_label[i]);
|
||||
}
|
||||
printf ("\t\t/* %3d */ %s\n", i, code_label[i]);
|
||||
##printf ("\t};\n");
|
||||
}
|
Reference in New Issue
Block a user