Ответ 1
Вы не можете этого сделать, потому что нет кодировки команд MIPS, которая поддерживает такую вещь. Вам необходимо сделать дополнение:
add $a2, $a1, $t2
lw $s2, 0($a2)
Кодировка инструкции lw
выглядит следующим образом:
1000 11ss ssst tttt iiii iiii iiii iiii
Где sssss
- номер регистра источника, ttttt
- номер регистра назначения, а iiiiiiiiiiiiiiii
- немедленный. Там нет места в этой кодировке (и нет альтернативных кодировок команд), которые используют два регистра для генерации адреса памяти. Специфическая машинная инструкция, которая должна быть закодирована из приведенного выше примера:
1000 1100 1101 0010 0000 0000 0000 0000
Так как непосредственное значение 0
, $s2
является регистром 18
, а $a2
является регистром 6
.