我目前正在学习计算机组织和汇编语言课程,该课程主要使用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吗?如果是这样,为什么?是否存在性能差异或仅仅是品味问题?
答案 0 :(得分:11)
move
指令不是真正的指令 - 它是由汇编程序转换为add
指令的伪指令。
这些伪指令有很多,参见例如https://en.wikipedia.org/wiki/MIPS_architecture#Pseudo_instructions
这种类型的东西在RISC处理器上很常见,你需要一个最小的指令集,并且一个特定的指令可能用于多个目的。