为什么用字节作为偏移量单位的mips中的sw指令?

时间:2018-11-29 12:57:07

标签: encoding mips offset mips32 instruction-set

我对MIPS32指令中使用的偏移量单位有疑问。我刚刚注意到,像lw $t0, offset($s1)这样的内存访问指令的offset单位为 byte ,而像beq $r1, $r2, L1和跳转j SOMEWHERE这样的分支指令的单位都为< strong>单词。

IIRC,MIPS要求,每个数据/指令应对齐存储在内存中,其地址为4的倍数,即0x0, 0x4, 0x8, ... etc。如果是这样,那么为什么不让 word 单位的offset中的lw/sw,则范围更大?是因为lb/sb使用字节单位吗?因此, 特殊情况还不足以打破规则 [“]好的设计需要好的折衷。[。”] 在这里适用吗?< / p>

我还想知道如果我使用lw加载地址不是4的倍数的数据会怎样?

0 个答案:

没有答案