⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jumptable.awk

📁 本程序为ST公司开发的源代码
💻 AWK
字号:
/[^[:blank:]]/ {
	line[num++]=$0
}

END     {
	for (i = 0; i < num; i++)
	{
		gsub(/[[:blank:]]+/, "", line[i])
	}

	printf ";\n; Automaticaly generated file\n;\n"
	printf "\tARM\n"
	printf "\tREQUIRE8\n"
	printf "\tPRESERVE8\n"
	printf "\n"

	for (i = 0; i < num; i++)
		if (line[i] ~ /^\$/)
			printf "\tIMPORT\t||$Super$%s||\n",line[i]
		else
			printf "\tIMPORT\t||$Super$$%s||\n",line[i]

	printf "\n"
	for (i = 0; i < num; i++)
		if (line[i] ~ /^\$/)
			printf "\tEXPORT\t||$Sub$%s||\n",line[i]
		else
			printf "\tEXPORT\t||$Sub$$%s||\n",line[i]
	
	printf "\n"
	printf "\tAREA ||.constdata||, DATA, READONLY, ALIGN=2\n"

	printf "\n"
	printf "\tEXPORT\trom_jump_table\n"
	printf "\tEXPORT\trom_jump_table_end\n"
	printf "\n"
	printf "rom_jump_table\n"
	for (i = 0; i < num; i++)
		if (line[i] ~ /^\$/)
			printf "\tDCD\t||$Super$%s||\n",line[i]
		else
			printf "\tDCD\t||$Super$$%s||\n",line[i]
	printf "rom_jump_table_end\n"

	printf "\n"
	printf "\tAREA ||.text||, CODE, READONLY, ALIGN=2\n"
	printf "\n"

	printf "\n"
	for (i = 0; i < num; i++)
	{
		if (line[i] ~ /^\$/)
		{
			printf "||$Sub$%s|| PROC\n",line[i]
			printf "\tMOV\tr0,#0x40000000\n"
			printf "\tLDR\tr0,[r0,#(4*%d)]\n",i
			printf "\tBX\tr0\n"
			printf "\tENDP\n\n"
		}
		else
		{
			printf "||$Sub$$%s|| PROC\n",line[i]
			printf "\tSWI\t(256+4*%d)\n",i
			printf "\tENDP\n\n"
		}
	}

	printf "\n"
	printf "\tEND\n"
}

⌨️ 快捷键说明

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