如果我试图从Mips中未4对齐的地址加载一个单词,该行为应该是什么?

如果我试图从Mips中未4对齐的地址加载一个单词,该行为应该是什么?,mips,Mips,我正在构建一个Mips汇编程序,从目前的状态来看,它可以容忍诸如lw$s0,3($sp)之类的指令,这对我来说有点违反直觉,因为我不知道处理器是否可以容忍这一点,或者它不能从一个字加载一个字节,从另一个字加载另外3个字节 换句话说,我应该处理数据,因为它是一个字数组(二维数组),所以我只能处理4对齐的字,还是一个拥有所有字节的一维数组,我可以访问任意4个连续字节并将它们填充到寄存器中?MIPS处理器应该在地址未对齐时出错,但确定这一点不是汇编程序的工作 警告可能是合理的,但从技术上讲,在构建时,

我正在构建一个Mips汇编程序,从目前的状态来看,它可以容忍诸如
lw$s0,3($sp)
之类的指令,这对我来说有点违反直觉,因为我不知道处理器是否可以容忍这一点,或者它不能从一个字加载一个字节,从另一个字加载另外3个字节


换句话说,我应该处理数据,因为它是一个字数组(二维数组),所以我只能处理4对齐的字,还是一个拥有所有字节的一维数组,我可以访问任意4个连续字节并将它们填充到寄存器中?

MIPS处理器应该在地址未对齐时出错,但确定这一点不是汇编程序的工作

警告可能是合理的,但从技术上讲,在构建时,您很少能够知道或预测寄存器中的内容。偏移量为3是合法的,如果寄存器中的地址也是奇数,则可以使用
lw
sw

此外,程序员可能正试图造成错误-你永远不知道


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

除非汇编程序能够证明有效地址(即偏移量加基址)是未对齐的,否则我不明白它为什么要对此做任何事。在可以证明情况会是这样的情况下,我想您可以输出一个警告。谢谢。我不知道添加基址和偏移量可能会导致对齐的地址能够正确工作,但总而言之,我担心的是添加的地址不能正确对齐。