获取地址未在字边界上对齐,MIPS32

Fetch address not aligned on word boundary ,MIPS32

好的,我有了这个简单的 mips32 程序:

.text
.globl main

main:

lw $s3,10 

move $a0,$s3
li $v0,1
syscall

li $v0,10
syscall #program termination

我想做的就是加载注册 $s3 数字 10 然后打印 it.Mars 没有错误地组装它,但是当我点击 运行 时我得到以下错误:

Runtime exception at 0x00400000: fetch address not aligned on word boundary 0x0000000a

我知道

有问题
lw $s3,10 

命令,但我真的不在乎如何修复 it.What 我不明白错误是什么: 获取地址未在字边界上对齐。这是什么意思?为什么会这样?

lw表示从指定地址的内存中加载字。因为MIPS32上1个字是4个字节,所以地址必须是4的倍数。

所以,这些命令会给你同样的错误:

lw $s3,9
lw $s3,11

这些不会:

lw $s3,8
lw $s3,12