lw (загрузка слова) загружает слово из памяти в регистр.
lw $2, 4($4) # $2 <- mem($4+4)
$ 2 - регистр назначения, а $ 4 - регистр адреса. А источником информации является память.
4 - это смещение, которое добавляется (не умножается) в регистр адресов. Этот вид доступа к памяти называется адресацией на основе и очень полезен во многих ситуациях. Например, если $ 4 содержит адрес структуры, смещение позволяет выбирать различные поля структуры. Или следующий или предыдущий элемент в массиве и т. Д. Смещение не обязательно должно быть кратным 4, но (адресный регистр + смещение) должно и в большинстве случаев оба равны.
Sw похож, но сохраняет регистр в памяти.
sw $5, 8($7) # mem[$7+8] <- $5
Снова $ 7 - регистр, содержащий адрес памяти, 8 - смещение, а $ 5 - источник информации, которая будет записана в память.
Обратите внимание, что в отличие от других инструкций MIPS, первый операнд является источником, а не адресатом. Вероятно, это связано с тем, что регистр адресов играет одинаковую роль в обеих инструкциях, тогда как в lw он используется для вычисления адреса памяти источника данных, а в sw - адреса назначения памяти.