1

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

ADD rA, rB, r0

r0是包含 0的指令类型 R,因此将 0 添加到 rB 并放置在包含 rB+0 的 rA 中,对吗?

ADDI rA, rB, 0

这是我的指令类型,但它与第一​​个指令相同还是不会?

4

1 回答 1

2

您将不得不查看特定处理器的实现。如果处理器在读取 r0 时知道它可以快捷方式并将其设为零,那么它可以比去寄存器文件获取 r0 的值更快。如果有很多寄存器文件活动迫使停顿,这将发挥作用,只有在多条指令上存在寄存器文件干扰时才添加时钟。基本上,我怀疑从这个角度来看有什么不同。

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

ra = rb + 0.

ADD 和 ADDI 信号都溢出,但是将零加到 rb 你不能得到溢出,所以不管你使用 ADD/ADDU 还是 ADDI/ADDIU

于 2012-08-20T13:54:06.073 回答