1

我的输入

.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 处执行非指令

尝试在 0x00400028 处执行非指令

这是什么意思?

4

1 回答 1

0

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

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

因此,在您最后一次指示之后,您应该:

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

    li $v0, 10

    syscall

  • 永远循环,即:

    loop: j loop

于 2015-11-12T15:28:43.080 回答