为什么MIPS架构不区分存储有符号和无符号类型数据?

chu*_*uck 1 assembly mips

当我阅读 MIPS 架构手册时,只有lbu/lhu指令。但我们没有sbu/shu指示。正如我发现的,有一个用于加载的签名扩展,但它仍然可以解释实际的存储行为。CPU在存储操作时如何区分无符号和有符号数据?是否有任何其他标志或机制来指示该地址到底存储什么数据?

Pau*_*l R 6

存储无符号数据与有符号数据没有什么特别之处——它们只是 CPU 写入内存的位。具有单独的有符号和无符号加载的原因是,对于小于寄存器宽度的加载,可以方便地对有符号值进行自动符号扩展,其中寄存器的高位部分用 s 填充0正值s1表示负值。然而,无符号加载只会用 s 填充寄存器的高位部分0,因为当然没有隐式符号。