I was reading about 32 bits Mips architecture. As far as I Know Mips memory is indexed using 32 bit locations and each location contain 32 bits value.
In load word instruction its in the following format : lw $t, offset($s) which means -> $t = memoryIndex($s + offset), where $s, $t are registers that contain 32 bits value and offset is a 16 bit immediate value.
If $s contains 32 bits value and the memory can be indexed using 32 bits value, why do we need an immediate value as an offset ?