📄 jumptable.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 + -