MIPS指令集移动vs add / addi 0用于存储值?

时间:2012-02-02 16:31:26

标签: assembly mips

我目前正在学习计算机组织和汇编语言课程,该课程主要使用MIPS指令集来教授汇编语言。

我注意到教授在网上发布的许多例子都使用add或addi将值移到$ 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吗?如果是这样,为什么?是否存在性能差异或仅仅是品味问题?

1 个答案:

答案 0 :(得分:11)

move指令不是真正的指令 - 它是由汇编程序转换为add指令的伪指令

这些伪指令有很多,参见例如https://en.wikipedia.org/wiki/MIPS_architecture#Pseudo_instructions

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

相关问题