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

What should be the behavior if I try to load a word from an address that is not 4-aligned in Mips?

我正在构建一个 Mips 汇编器,就目前的状态而言,它可以容忍 lw $s0, 3($sp) 等指令,我发现这对我来说有点违反直觉,因为我不知道处理器是否容忍这个或者它不能加载例如一个字的 1 个字节和另一个字的其他 3 个字节。

换句话说,我应该处理数据,因为它是一个单词数组(二维数组),所以我只能处理 4 对齐的单词,或者一个一维数组,它具有所有一个接一个字节,其中我可以访问任何4个连续字节并将它们塞入寄存器?

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

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

另外,程序员可能会试图造成错误——你永远不知道。

关键在于指令具有有效编码,汇编程序应将文本翻译成该机器代码。