Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我听说这些非常不同,但为什么结果不同?
ADD rA, rB, r0
r0是包含 0的指令类型 R,因此将 0 添加到 rB 并放置在包含 rB+0 的 rA 中,对吗?
r0
ADDI rA, rB, 0
这是我的指令类型,但它与第一个指令相同还是不会?
您将不得不查看特定处理器的实现。如果处理器在读取 r0 时知道它可以快捷方式并将其设为零,那么它可以比去寄存器文件获取 r0 的值更快。如果有很多寄存器文件活动迫使停顿,这将发挥作用,只有在多条指令上存在寄存器文件干扰时才添加时钟。基本上,我怀疑从这个角度来看有什么不同。
就功能而言,这两条指令是等效的,因为 r0 总是读为零,因此这两个操作的结果都是。
ra = rb + 0.
ADD 和 ADDI 信号都溢出,但是将零加到 rb 你不能得到溢出,所以不管你使用 ADD/ADDU 还是 ADDI/ADDIU