Mips 尝试在0x00400024处执行非指令。Qtspim中的错误代码

Mips 尝试在0x00400024处执行非指令。Qtspim中的错误代码,mips,qtspim,Mips,Qtspim,我必须将此C代码转换为Mips,并在Qtspim上运行代码 #include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { int sum = 0; int i; for(i=0; i < 1000; i++) sum = sum + i; printf("sum=%d", sum); return 0; } 请告诉

我必须将此C代码转换为Mips,并在Qtspim上运行代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
    int sum = 0;
    int i;
    for(i=0; i < 1000; i++)
    sum = sum + i;
    printf("sum=%d", sum);

    return 0;

}
请告诉我怎么了


上面写着“尝试在0x00400024执行非指令”

您没有添加任何代码来终止程序(例如,系统调用10)。哦,是的,我意识到了这一点,并添加了它,但它仍然显示错误消息。您也没有提供一个
main
标签,让模拟器用作程序的入口点。thx所以我把它放进去了”main:“在代码的开头,但它是相同的。您可能没有使用
.globl main
导出标签。我建议您阅读模拟器的文档或查看一些示例程序。
.data
sumnum: .asciiz "Sum: "
.text
main:

li $s1, 0 #for i
li $s2, 0 #for sum
li $s3, 1000 #for loop condition
Loop:
    
    beq $s1, $s3, Exit #loop
    add $s2, $s2, $s1 # adding
    addi $s1, $s1, 1 # increment for i
    j Loop
Exit:
    li $v0, 4
    la $a0, sumnum      #print sum
    syscall
    
    move $a0, $s2    
    li $v0, 1     #print value for sum
    syscall     

    li $v0, 10
    syscall 
.data
sumnum: .asciiz "Sum: "
.text
main:

li $s1, 0 #for i
li $s2, 0 #for sum
li $s3, 1000 #for loop condition
Loop:
    
    beq $s1, $s3, Exit #loop
    add $s2, $s2, $s1 # adding
    addi $s1, $s1, 1 # increment for i
    j Loop
Exit:
    li $v0, 4
    la $a0, sumnum      #print sum
    syscall
    
    move $a0, $s2    
    li $v0, 1     #print value for sum
    syscall     

    li $v0, 10
    syscall