【发布时间】:2021-07-10 09:28:17
【问题描述】:
我在尝试运行我的代码后收到以下消息:
The following symbols are undefined:
printf
这是我的代码的一部分:
main__loser:
.asciiz "You lose!"
(...)
main__body:
jal whole_grid
nop
jal direction
nop
sw $v0,24($fp)
lw $a0,24($fp)
jal update_snake
nop
bne $v0,$zero,main__body
nop
la $v0,length
lw $v1,0($v0)
li $v0,3 # 0x3
bne $v0,$zero,main__epilogue
div $zero,$v1,$v0
break 7
mfhi $v0
mflo $v0
sw $v0,28($fp)
lw $a1,28($fp)
la $a0, main__loser
jal printf
nop
move $v0,$zero
main__epilogue:
(...)
有人知道我没有定义符号printf这个错误是什么意思吗?
【问题讨论】:
-
SPIM 不附带 libc,在这种情况下,您只需将固定字符串传递给
printf。相反,使用 SPIM 的 print-string 系统调用;这是使用 SPIM(和 MARS)的预期方式。 courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html -
另外,在将常量
3加载到$v0之后,bne $v0,$zero似乎毫无意义;该分支将始终被占用,因此您的jal printf将永远无法到达。