Loading and storing bytes in MIPS
mips
Solution
add $s3, $zero, $zero
This performs the addition `$s3 = 0 + 0`, effectively setting the register `$s3` to a value of zero.
lb $t0, 1($s3)
This loads a byte from a location in memory into the register `$t0`. The memory address is given by `1($s3)`, which means the address `$s3+1`. This would be the 0+1=1st byte in memory. Since we have a big-endian architecture, we read bytes the 4-byte chunks "big end first".
byte: 0 1 2 3
00 90 12 A0
The 0th byte is `00`, and the 1st byte is `90`. So we load the byte `90` into `$t0`.
sb $t0, 6($s3)
This stores a byte from the register `$t0` into a memory address given by `6($s3)`. Again this means the address `$s3+6`.
byte: 4 5 6 7
FF FF FF FF
becomes
byte: 4 5 6 7
FF FF 90 FF
Now, what if the architecture was little-endian? This would mean bytes are arranged "little end first" in memory, so the effect of the 2nd and 3rd instructions change.
lb $t0, 1($s3)
This loads the byte in memory address 1 into register `$t0`. But now the addresses are "little end first", so we read `12` into the register instead.
byte: 3 2 1 0
00 90 12 A0
Next...
sb $t0, 6($s3)
This stores the byte in register `$t0`, which is `12` into a memory address 6. Again with little-endian architecture:
byte: 7 6 5 4
FF FF FF FF
becomes
byte: 7 6 5 4
FF 12 FF FF
Problem
I'm studying for an exam tomorrow and I'm quit confused on the loading/storing bytes topic. I have this example: I don't understand how he got the answers in red at all. Could someone help explain this to me?