Почему разработчики MIPS не использовали 5 оставшихся битов в инструкциях R-формата для некоторых других полезных вещей? - PullRequest
1 голос
/ 09 апреля 2019

В MIPS R-формат кодируется так:

opcode (6) | rs (5) | rt (5) | rd (5) | shamt (5) | funct (6) 

Поле shamt используется только в командах сдвига или поворота .В других случаях это всегда 0. Так почему они не могли использовать это для других более полезных вещей?

ИМХО, будет намного лучше использовать это поле для хранения регистрационного номера, в котором хранится перенос / заимствовать add или sub инструкции .Например,

addu $Rdest, $Rcarry, $Rsrc1, $Rsrc2

$Rcarry будет установлен только на 0 или 1 в зависимости от бита переноса.Это сделает его гораздо более полезным для арифметики с множественной точностью.Архитектуры с регистром флагов могут выполнять сложение двойных слов в 2 инструкциях, тогда как MIPS нужно 3, потому что перенос должен быть рассчитан в отдельной инструкции.Умножения также выиграют от этого, потому что и максимум и минимум выходных данных могут быть указаны в самой инструкции вместо того, чтобы тратить несколько кодов операций для перемещения из / в регистры HI / LO

Аналогичнополе rs фиксируется на 0 для shift инструкций.Почему они не могли использовать его для таких вещей, как поддержка смены нескольких слов, например, x86 shrd/shld?Или просто используйте эти 5 битов в rs/shamt в качестве поля sub-opcode .Это значительно увеличило бы пространство кода операции.С этим большим пространством, вероятно, MIPSr6 ​​ не нужно будет вносить срочные изменения, удалив некоторые инструкции, чтобы оставить место для будущего расширения

...