eig*_*ris 16
add $s3, $zero, $zero
Run Code Online (Sandbox Code Playgroud)
这执行添加$s3 = 0 + 0,有效地将寄存器设置$s3为零值.
lb $t0, 1($s3)
Run Code Online (Sandbox Code Playgroud)
这个升的OAD一个b从在存储器中的位置到寄存器YTE $t0.存储器地址由1($s3),即地址给出$s3+1.这将是内存中的0 + 1 =第一个字节.由于我们有一个大端架构,我们读取4字节块"大头优先"的字节.
byte: 0 1 2 3
00 90 12 A0
Run Code Online (Sandbox Code Playgroud)
第0个字节是00,第1个字节是90.所以我们将字节加载90到$t0.
sb $t0, 6($s3)
Run Code Online (Sandbox Code Playgroud)
此š tores一个b从寄存器YTE $t0到由给定的存储器地址6($s3).这意味着地址$s3+6.
byte: 4 5 6 7
FF FF FF FF
Run Code Online (Sandbox Code Playgroud)
变
byte: 4 5 6 7
FF FF 90 FF
Run Code Online (Sandbox Code Playgroud)
现在,如果架构是little-endian怎么办?这意味着字节在内存中排列为"小端优先",因此第2和第3指令的效果会发生变化.
lb $t0, 1($s3)
Run Code Online (Sandbox Code Playgroud)
这会将存储器地址1中的字节装入寄存器$t0.但现在地址是"小结束",所以我们读12入寄存器.
byte: 3 2 1 0
00 90 12 A0
Run Code Online (Sandbox Code Playgroud)
下一个...
sb $t0, 6($s3)
Run Code Online (Sandbox Code Playgroud)
这将字节存储在寄存器中$t0,该字节存储在12存储器地址6中.再次使用little-endian架构:
byte: 7 6 5 4
FF FF FF FF
Run Code Online (Sandbox Code Playgroud)
变
byte: 7 6 5 4
FF 12 FF FF
Run Code Online (Sandbox Code Playgroud)