Mips 尝试执行非指令时出错

Mips 尝试执行非指令时出错,mips,qtspim,Mips,Qtspim,我的输入 .text .globl start start: # load with sign extension lw $t0, memory lh $t1, memory lb $t2, memory # load without sign extension lhu $t3, memory lbu $t4, memory .data memory: .word 0xABCDE080 # little endian: 80E0CDAB 我的错误 尝试在0x00400028处执行

我的输入

.text
.globl start


start:
# load with sign extension
lw $t0, memory
lh $t1, memory
lb $t2, memory


# load without sign extension
lhu $t3, memory
lbu $t4, memory

.data 
memory:
.word 0xABCDE080 # little endian: 80E0CDAB
我的错误

尝试在0x00400028处执行非指令


这意味着什么?

这意味着CPU正在尝试执行数据

您的程序在标签
start
处开始执行代码,它将执行您的所有加载指令,然后您没有提供任何代码,因此CPU将继续执行上一条指令之后存储的内容,即“数据”

因此,在上一次指导之后,您应该:

  • 如果您正在编写函数,则向“从函数返回”发出
    jr$ra
  • 发出系统调用10以终止执行,即:

    li$v0,10

    syscall

  • 永远循环,即:

    loop:j loop


    • 表示CPU正在尝试执行数据

      您的程序在标签
      start
      处开始执行代码,它将执行您的所有加载指令,然后您没有提供任何代码,因此CPU将继续执行上一条指令之后存储的内容,即“数据”

      因此,在上一次指导之后,您应该:

      • 如果您正在编写函数,则向“从函数返回”发出
        jr$ra
      • 发出系统调用10以终止执行,即:

        li$v0,10

        syscall

      • 永远循环,即:

        loop:j loop