在MIPS汇编中清除寄存器(= 0)的最快方法是什么? 一些例子: xor $t0, $t0, $t0and $t0, $t0, $0move $t0, $0li $t0, 0add $t0, $0, $0 哪个效率最高? 在许多MIPS实现中,这些操作都将编译为相同的指令,因为
一些例子:
xor $t0, $t0, $t0 and $t0, $t0, $0 move $t0, $0 li $t0, 0 add $t0, $0, $0
哪个效率最高?
在许多MIPS实现中,这些操作都将编译为相同的指令,因为通常’mov $a,$b’是成语或$a,$b,$0和li $r,x是ori $r的简写, $0,x:move $t0, $0 li $t0, 0
这些都将发生在同一个管道上,在架构上是等价的:
xor $t0, $t0, $t0 and $t0, $t0, $0
在我曾经使用的每个RISC实现中,添加与xor /和/ nor / etc在同一个管道上.
基本上,这对于特定芯片的实现来说都是特别的,但它们都应该是单个时钟.如果芯片出现故障,li或者x,$0,$0可能是最快的,因为它们可以最大限度地减少对其他寄存器的错误依赖性.