1
0
Fork 0
xcache/mkopcode_spec.awk

47 lines
745 B
Awk
Executable File

#! /usr/bin/awk -f
# vim:ts=4:sw=4
# process eaccelerator/opcodes.c
BEGIN {
FS=" "
max = 0;
started = 0
}
/OPDEF/ {
if (started) {
name = "";
if (match($0, /"([^"]+)"/, m)) {
name = m[1];
}
sub(/"[^"]*"/, "");
if (!match($0, /EXT_([^ |]+).*OP[1S]_([^ |]+).*OP2_([^ |]+).*RES_([^ |)]+).*/, array)) {
print "error" $0
exit
}
id = "";
if (match($0, /\/\* *([0-9]+) *\*\//, comments)) {
id = comments[1];
}
printf "\tOPSPEC(%10s, %10s, %10s, %10s) /* %s %-30s */\n", array[1], array[2], array[3], array[4], id, name;
next
}
}
/^}/ {
print $0
exit;
}
/^[ ]*,[ ]*$/ {
next
}
{
if (started) {
print $0
next
}
}
/^static/ {
started = 1;
print "static const xc_opcode_spec_t xc_opcode_spec[] = {"
}