Почему наборы инструкций RISC обычно не содержат регистр для регистрации инструкции копирования?

У меня был этот вопрос на экзамене, и я смущен, потому что, насколько я знаю,

move $t0, $a0               # COPY $A0 TO $T0

в инструкции MIPS это предусмотрено, а MIPS - это процессор RISC. Я что-то упускаю?


person roffensive    schedule 13.11.2018    source источник
comment
Если у них нулевой регистр, как у MIPS (и у большинства подобных RISC), тогда _1 _ / _ 2_ - очевидные замены. Без нулевого регистра это заставило бы меня некоторое время чесать затылок.   -  person Ped7g    schedule 13.11.2018
comment
Также может быть неочевидно, почему, если вы пропустили ту часть о том, как кодируется машинный код. На RISC-машинах обычно каждая инструкция имеет размер ровно одно машинное слово (довольно часто 32 бита). Таким образом, чем меньше инструкций вам нужно кодировать, тем больше битов остается для спецификации регистров и / или немедленных значений. Обратите внимание, что 32-битная инструкция не может содержать как код операции, так и 32-битный немедленный код, поэтому загрузка полной 32-битной константы на 32-битном RISC-процессоре в регистр обычно занимает либо 2-3 обычных инструкции, либо константа извлекается из памяти. Нет move = больше бит для других.   -  person Ped7g    schedule 14.11.2018


Ответы (1)


Move - это псевдоинструкция, и при сборке действительно будет другая инструкция.

Например

move $ t0, $ zero реализуется как addu $ t0, $ zero, $ zero

person lostbard    schedule 13.11.2018
comment
Хорошо, а вы знаете ответ на первоначальный вопрос? - person roffensive; 13.11.2018
comment
вот ответ - нет хода - действительно добавлено - person lostbard; 13.11.2018