这是我一直在努力的程序的一部分,并且在编写代码的查找功能部分时遇到了麻烦。这是C中的代码,但是无法将其转换为MIPS。任何帮助将不胜感激。
Pseudo codes:
$a0 = 0 # index into symTab array
compare:
if ($a0 >= symAV($0))
goto not_found
if (TOKEN[0] <> symTab[$a0])
goto nextSym
if (TOKEN[1] <> symTab+4[$a0])
goto nextSym
return # found the symbol
nextSym:
$t0++ # should be incremented by 16 in MIPS
goto compare
not_found:
$a0 = -1
return
答案 0 :(得分:3)
让自己成为能够生成MIPS输出的编译器,例如gcc
,然后使用“生成程序集输出”选项编译代码。 gcc -S
可以为您做到这一点。
然后获取该代码并检查/使用它。如果您想了解它,您可能希望确保优化处于较低级别(例如使用-O0
)。否则,您很可能无法理解编译器生成的内容。