首页 > 解决方案 > 为什么 mips 中的 sw 指令使用字节作为偏移单位?

问题描述

我对 MIPS32 指令中使用的偏移单位有疑问。lw $t0, offset($s1)我刚刚注意到内存访问指令像offset单位字节一样,而分支指令beq $r1, $r2, L1和跳转j SOMEWHERE都具有单位

IIRC,MIPS 要求每个数据/指令都应该以4 的倍数的地址对齐0x0, 0x4, 0x8, ... etc存储在内存中,即. 如果这是真的,那为什么不让单元offset进来,所以范围更大呢?这是因为它使用了字节单位吗?所以lw/swlb/sb特殊情况不足以打破规则 ["] 好的设计需要良好的妥协。[."]在这里适用吗?

我还想知道如果我lw用来加载地址不是 4 的倍数的数据会发生什么?

标签: encodingmipsoffsetmips32instruction-set

解决方案


推荐阅读