如果我试图从一个地址加载一个字,而这个地址在Mips中不是4-对齐的,应该是什么行为?

问题描述 投票:0回答:1

我正在构建一个Mips汇编器,就其目前的状态而言,它可以容忍以下指令,如 lw $s0, 3($sp)我发现这对我来说有些反常,因为我不知道处理器是否能容忍这种情况,或者它不能从一个字中加载1个字节,而从另一个字中加载另外3个字节。

换句话说,我应该把数据处理成一个字数组(二维数组),所以我只能寻址4个对齐的字,还是一个一维数组,所有的字节一个接一个,我可以访问任何4个连续的字节,并把它们塞进一个寄存器?

mips
1个回答
2
投票

一个MIPS处理器应该在地址错位的情况下发生故障,但这不是汇编器的工作来决定的。

一个警告可能是合理的,但从技术上讲,在构建时,你很少能知道或预测寄存器中的内容。  3的偏移量是合法的,并且可以工作,在有了 lwsw如果寄存器中的地址也是奇数。

另外,程序员可能是想引起一个故障--你永远不知道。

问题的关键是,指令有一个有效的编码,汇编者应该将文本翻译成该机器代码。

© www.soinside.com 2019 - 2024. All rights reserved.