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
我也曾尝试取消选中异常处理程序,但无济于事。
代码如下:
.data
Message: .asciiz "Hello World"
.text
li $v0, 4
la $a0, Message
syscall
根据spim的观点,你的程序有两个问题
spim 需要一个 main 并且 none 在您的程序中声明。
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 是一个好习惯。
我刚开始学习 MIPS 32 并尝试 运行 这段代码,它 运行 在 MARS MIPS 模拟器上很顺利,但是当我将它保存到 (.asm) 文件并尝试 运行 在 QtSpim 上,控制台弹出消息 "Hello World" 但错误:"Attempt to execute non-instruction at 0x0040000c" 也出现了,我错过了什么或者任何部分不正确吗?
Error screnshot
我也曾尝试取消选中异常处理程序,但无济于事。
代码如下:
.data Message: .asciiz "Hello World" .text li $v0, 4 la $a0, Message syscall
根据spim的观点,你的程序有两个问题
spim 需要一个 main 并且 none 在您的程序中声明。
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 是一个好习惯。