我对汇编语言非常陌生。我正在阅读关于MIPS架构的资料,得知了有addi
操作码,但没有subi
操作码。为什么没有subi
操作码呢?
我对汇编语言非常陌生。我正在阅读关于MIPS架构的资料,得知了有addi
操作码,但没有subi
操作码。为什么没有subi
操作码呢?
创建指令集时,你受到一些限制,如可创建指令的总数。MIPS 的创建者意识到没有必要添加 subi
(因为可以使用 2 的补码用addi
来加上一个负数),因此他们简单地决定不去制作该指令。这可能是为了节省指令数量,或者只是因为它没有必要。
sub
,所以它并不是必须的。但是,除非包括 sub
会省略另一个重要操作,否则将其包括在 ISA 中并不会有害。 - Chris Greggsub
比使用大于32767的立即数的subi
更常见,因此引入了该指令,否则我们的完整指令集只需要一条指令,但处理常见操作会变得非常缓慢。 “好的设计需要做出好的妥协。” - phuclv无论是addi
还是addiu
,都将16位有符号立即数作为操作数,因此添加单独的subi
和subiu
操作码没有意义。
addi
中的 immediate 在加到寄存器时是否进行符号扩展? - user35443ADDIU
也是一样(ADDIU
与ADDI
的唯一区别在于它不会引发溢出异常)。 - ninjalj
subi
实现为伪指令(包括MARS模拟器但不包括SPIM)。 - Peter Cordes