Assembly 加法rA,rB,r0和加法rA,rB,0之间有什么区别?
我听说这些是非常不同的,但为什么结果不同呢Assembly 加法rA,rB,r0和加法rA,rB,0之间有什么区别?,assembly,mips,Assembly,Mips,我听说这些是非常不同的,但为什么结果不同呢 添加rA、rB、r0 指令类型是R,其中包含0的r0,因此0被添加到rB中,并放置在将包含rB+0的rA中,对吗 ADDI rA,rB,0 这是一个指令类型I,但它与第一个指令类型相同,还是不一样?您必须查看特定处理器的实现。如果处理器在读取r0时知道它可以设置快捷方式并将其设为零,那么它可以比去寄存器文件获取r0的值更快。如果有大量寄存器文件活动迫使暂停,那么这将起作用,只有在多条指令上存在寄存器文件干扰时才会增加时钟。基本上,我怀疑从这个角度看有什
添加rA、rB、r0
指令类型是R,其中包含0的r0
,因此0被添加到rB中,并放置在将包含rB+0的rA中,对吗
ADDI rA,rB,0
这是一个指令类型I,但它与第一个指令类型相同,还是不一样?您必须查看特定处理器的实现。如果处理器在读取r0时知道它可以设置快捷方式并将其设为零,那么它可以比去寄存器文件获取r0的值更快。如果有大量寄存器文件活动迫使暂停,那么这将起作用,只有在多条指令上存在寄存器文件干扰时才会增加时钟。基本上,我怀疑从这个角度看有什么不同 就功能而言,这两条指令是等效的,因为r0总是读取为零,所以两个操作的结果都是相同的
ra = rb + 0.
ADD和ADDI信号都有溢出,但是将零添加到rb中无法得到溢出,因此使用ADD/ADDU或ADDI/ADDIU都无关紧要。“为什么结果不同?”-为什么您认为会这样?结果是相同的,实现它们的方法是不同的。MIPS是一种RISC架构,因此
添加rx,ry,r0
和添加rx,ry,0
都会在一个时钟周期内产生结果。换言之,结果在添加后的后续指令的rx
中可用,而此add
指令的两个版本都没有任何管道暂停。这两条指令具有相同的功能和相同的性能。对,这不是我所说的。我最近一直在读一本H和P的书。因为r0是只读的,我不知道我所想的情况是如何发生的,所以这不是问题。