MIPS store word/load word
Есть действительно простой вопрос здесь. Может ли регистр иметь как значение, так и адрес. Как и в предположении, что я хочу поменять местами значения: 5, хранящиеся в t0, и 7, хранящиеся в t1, работает этот код:
sw $t0, 0($t0)
sw $t1, 0($t1)
lw $t1, 0 ($t0)
lw $t0, 0 ($t1)
Извините это может звучать глупо
1 ответ
Не совсем для всех значений, так как sw
а также lw
необходимо правильное выравнивание (действительные адреса должны быть кратны 4).
То есть ваш код будет работать только для значений, кратных 4, и в любом случае это будет плохой идеей, потому что вы будете в основном писать мусор по тому адресу, на который указываете.
Чтобы поменять регистры без перезаписи третьего регистра, вы можете использовать следующую хитрость:
xor $t0, $t0, $t1
xor $t1, $t0, $t1
xor $t0, $t0, $t1