ADD rA,rB,r0和ADDI rA,rB,0之间有什么区别?

时间:2012-08-20 10:16:01

标签: assembly mips

我听说这些是非常不同但为什么结果不同?

ADD rA, rB, r0

是带有r0的指令典型R,其中包含0,因此将0添加到rB并放置在包含rB + 0的rA中,对吧?

ADDI rA, rB, 0

这是一种典型的指令,但它与第一​​种指令相同或不同吗?

1 个答案:

答案 0 :(得分:2)

您必须查看特定处理器的实现。如果处理器知道读取r0它可以快捷并使其为零,那么它可能比转到寄存器文件以获取r0的值更快。如果存在许多强制停顿的寄存器文件活动,那么这将起作用,如果在多个指令上存在寄存器文件干扰,则仅添加时钟。基本上,我怀疑从这个角度来看存在差异。

就功能而言,两条指令是等效的,因为r0总是读为零,因此两个操作的结果都是。

ra = rb + 0.

ADD和ADDI信号都溢出,但是为rb加零,你不能得到溢出,所以如果你使用ADD / ADDU或ADDI / ADDIU

无关紧要