QtSpim 错误 "Attempt to execute non-instruction at 0x0040000c"

QtSpim Error "Attempt to execute non-instruction at 0x0040000c"

我刚开始学习 MIPS 32 并尝试 运行 这段代码,它 运行 在 MARS MIPS 模拟器上很顺利,但是当我将它保存到 (.asm) 文件并尝试 运行 在 QtSpim 上,控制台弹出消息 "Hello World" 但错误:"Attempt to execute non-instruction at 0x0040000c" 也出现了,我错过了什么或者任何部分不正确吗?

Error screnshot

我也曾尝试取消选中异常处理程序,但无济于事。

根据spim的观点,你的程序有两个问题

  1. spim 需要一个 main 并且 none 在您的程序中声明。

  2. spim 在最后一条指令后继续执行 "program"。最后应该有一个系统调用 10 来停止执行。

因此,您的 spim 程序的工作版本是

.data
    Message: .asciiz "Hello World"

.text
main:                            # start of program
    li $v0, 4
    la $a0, Message
    syscall
exit:
    li      $v0, 10              # syscall 10 terminates program 
    syscall                      # and exits 

确实,spim 有点敏感,如果可能的话,我建议您使用 mars。除此之外,始终在程序中添加一个 main 和一个 exit 是一个好习惯。