Параметры инструкции MIPS Ассемблера - PullRequest
1 голос
/ 11 мая 2010

почему такая инструкция как

mul   $t1, $v0 , 4 

оценивается как ожидалось. Но

mul   $t1, 4 , $v0 

приводит к синтаксической ошибке!

Интересно, почему первый работает, потому что mul работает только с регистрами по умолчанию, поэтому я ожидаю, что только такое решение будет работать в

li   $t1, 4             # set $t1 = 4
mul   $t1, $v0 , $t1      # set $t1 = 4 * n

Я использую симулятор SPIM.

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Это приводит к синтаксической ошибке просто потому, что MIPS поддерживает только псевдоинструкцию mul [rs] [rt] [imm], а не mul [rs] [imm] [rt]. Я предполагаю, что это делается для согласованности, потому что в MIPS нет реальной инструкции, которая бы поддерживала непосредственное значение в середине инструкции.

1 голос
/ 11 мая 2010

Хорошо, я бы посоветовал посмотреть на вывод кода операции.Возможно, умножение на 4 поменяно местами для добавления или, возможно, для немедленного увеличения скорости.Версия 4, reg не может быть перехвачена этой «оптимизацией», и именно поэтому она выдает ошибку.

...