Подтвердить что ты не робот

Синтаксис слова загрузки MIPS

Если я хочу загрузить значение из памяти, какой базовый адрес находится в $a0 и выключен, установите $t2, почему я не могу сделать следующее:

lw  $s2, $a1($t2)

так что эквивалентно выражению выше?

4b9b3361

Ответ 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.