为什么MIPS设计人员没有将R格式指令中剩余的5位用于其他有用的东西?

时间:2019-04-09 16:54:01

标签: encoding mips instructions

在MIPS中,R-format的编码方式如下

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

shamt字段仅在移位或旋转指令中使用 。在其他情况下,它始终为0。那么为什么他们不能将其用于其他更有用的东西呢?

恕我直言,最好使用该字段来存储用于在addsub指令中存储进位/借位的寄存器号。例如

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

$Rcarry仅根据进位而设置为0或1。这将使其对多精度算术更加有用。具有标志寄存器的体系结构可以在2条指令中执行双字加法,而MIPS需要3条指令,因为进位需要在单独的指令中计算。乘法也将从中受益,因为输出的高低都可以在指令本身中指定,而不是浪费几个操作码来进行HI / LO寄存器的移动

类似地,对于 shift 指令,rs字段固定为0。他们为什么不使用它来支持诸如x86的shrd/shld之类的多字转换呢?或者,只需将rs/shamt中的那5位用作 sub-opcode 字段。这将大大增加操作码空间。有了更大的空间,MIPSr6可能不需要进行重大更改,只需删除一些指令以留出空间以供将来扩展

0 个答案:

没有答案