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

时间:2016-12-26 14:08:21

标签: assembly mips32

好的,我有这个简单的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 

命令,但我真的不在乎如何解决它。我不明白的是错误: 提取地址未在字边界上对齐。这是什么意思?为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

因此,这些命令会给你同样的错误:

lw $s3,9
lw $s3,11

这些不会:

lw $s3,8
lw $s3,12