好的,我有这个简单的mips32程序:
.text
.globl main
main:
lw $s3,10
move $a0,$s3
li $v0,1
syscall
li $v0,10
syscall #program termination
我想要做的就是加载注册$ s3数字10然后打印它.Mars汇总这没有错误,但是当我点击运行时我得到以下错误:
Runtime exception at 0x00400000: fetch address not aligned on word boundary 0x0000000a
我知道
有问题lw $s3,10
命令,但我真的不在乎如何解决它。我不明白的是错误: 提取地址未在字边界上对齐。这是什么意思?为什么会这样?
答案 0 :(得分:1)
lw
表示从指定地址的内存加载字。因为MIPS32上的1个字是4个字节,所以地址必须是4的倍数。
因此,这些命令会给你同样的错误:
lw $s3,9
lw $s3,11
这些不会:
lw $s3,8
lw $s3,12