我听说这些是非常不同但为什么结果不同?
ADD rA, rB, r0
是带有r0
的指令典型R,其中包含0,因此将0添加到rB并放置在包含rB + 0的rA中,对吧?
ADDI rA, rB, 0
这是一种典型的指令,但它与第一种指令相同或不同吗?
答案 0 :(得分:2)
您必须查看特定处理器的实现。如果处理器知道读取r0它可以快捷并使其为零,那么它可能比转到寄存器文件以获取r0的值更快。如果存在许多强制停顿的寄存器文件活动,那么这将起作用,如果在多个指令上存在寄存器文件干扰,则仅添加时钟。基本上,我怀疑从这个角度来看存在差异。
就功能而言,两条指令是等效的,因为r0总是读为零,因此两个操作的结果都是。
ra = rb + 0.
ADD和ADDI信号都溢出,但是为rb加零,你不能得到溢出,所以如果你使用ADD / ADDU或ADDI / ADDIU
无关紧要