此 MIPS 代码如何测试字节顺序?

How does this MIPS code test for endianness?

li $t0 , 0xABCD9876
sw $t0 , 100([=10=])
lb $s5 , 101([=10=])

MIPS 新手;所以我的理解是,

li 将值 0xABCD9876 加载到寄存器 $t0

然后这个值被存储到地址([=14=]+100)

的内存中

lb 然后将地址 ([=15=]+101) 处的字节复制到寄存器 $s5

但是寄存器中没有任何内容 ([=15=]+101) 是吗? 0xABCD9876 存储在 ([=14=]+100),而不是 ([=20=]+1)。迷失在这一点上。

内存是按字节寻址的。因此,([=10=]+100) 指向单个字节。当它与 swlw 指令一起使用时,您实际上访问的不仅是 ([=10=]+100),还有 ([=14=]+101)([=15=]+102)([=16= ]+103)(换句话说,您正在访问 该地址开始的四个字节(一个字)。通过存储一个字然后访问它的特定字节,您可以确定该字的字节存储在内存中的顺序,从而确定处理器的字节顺序。