table.awk

来自「这是一个68k的编译器」· AWK 代码 · 共 42 行

AWK
42
字号
#
#       convert mnemonic/templates to C structures
#
BEGIN{
	print "#include \"table.h\""
	print
	print "struct tmpl template[] = {"
}

{
	if( NF == 0 )
		;
	else if( NF == 1 ){             # a new mnemonic
		nmne++
		mne[nmne] = $1
		tidx[nmne] = lastidx
		}
	else{                           # a template
		if( NF == 4 )
			lastf = "0"
		else
			lastf = $5
		printf "{ %s, {%s}, %s, 0x%s, 0x%s },", $1, $2, $3, $4, lastf
		if( tidx[nmne] == lastidx )
			printf "        /* %d = %s */\n", lastidx, mne[nmne]
		else
			printf "\n"
		tcount[nmne]++
		lastidx++
		}
}

END{
	print "};"
	print
	printf "/*  %d mnemonics, %d templates  */\n",nmne,lastidx
	print
	print "struct mne mnemonic[] = {"
	for(i=1;i<=nmne;i++)
		printf "\"%s\", %d, &template[%d],\n", mne[i], tcount[i], tidx[i] | "sort >mne.sort"
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?