2012-02-02 85 views
7

我目前正在参加计算机组织和汇编语言课程,该课程主要使用MIPS指令集来教授汇编语言。MIPS指令集移动vs add/addi 0存储值?

我注意到,许多该教授已在网上发布使用添加或阿迪移动一个值到$ A0参数寄存器进行调用打印服务,如下面的例子...

# store the first integer in $a0 and print 
add $a0, $zero, $t0 
li $v0, 1 
syscall 

或。 ..

# store the first integer in $a0 and print 
addi $a0, $t0, 0 
li $v0, 1 
syscall 

我也注意到一些在线的例子,别人只使用移动指令来完成同样的事情像下面...

# store the first integer in $a0 and print 
move $a0, $t0 
li $v0, 1 
syscall 

在这种情况下,是否使用add或addi指令而不是简单地使用move?如果是这样,为什么?是否有性能差异,或者这只是一个品味问题?

回答

9

move指令不是真正的指令 - 这是一个伪指令被翻译成汇编的add指令。

有一大堆这些伪指令,请参阅https://en.wikipedia.org/wiki/MIPS_architecture#Pseudo_instructions

这种类型的东西在RISC处理器上非常常见,您需要最小的指令集,并且特定指令可能用于多个目的。

+0

感谢您的澄清保罗。我没有意识到这一举动只是一个伪指令。 – 2012-02-02 17:34:15