I was reading in a MIPS manual that: "Notice we use the “unsigned” version of the “add immediate” instruction because we are dealing with an address, which is an unsigned binary number. We wouldn’t want to generate an exception just because a computed address crossed over the mid-point of the memory space."
What does this mean exactly? Specifically crossing over the mid-point of the memory space.
And also, in the following code, I don't understand why it skips from 8($sp) to 20($sp). The code loads from 12($sp) and 16($sp) later but when is it doing something with these portions of memory. I was thinking possible in jal JILL, but there isn't really much explanation given.
addiu $sp, $sp, -24
sw $t1, 0($sp)
sw $t2, 4($sp)
sw $t3, 8($sp)
sw $ra, 20($sp)
jal JILL
lw $ra, 20($sp)
lw $t4, 12($sp)
lw $t5, 16($sp)
addiu $sp, $sp, 24