MIPS编程约定,使用ADD for everything

MIPS编程约定,使用ADD for everything,mips,conventions,Mips,Conventions,我见过很多人使用ADD来代替特定的关键字 add $t0, $zero, $t1 ---> move $t0, $t1 add $t0, $zero, $zero ---> li $t0, 0 addi $t0, $t0, -1 ---> subi $t0, $t0, 1 为什么??我会完全使用“移动”或“li”等,而不是一直使用all ADD。这是惯例吗?如果是这样的话,有人能解释一下为什么以这种方式使用Add更好吗?Add$t0,$t0,$t1并不等同于move$

我见过很多人使用ADD来代替特定的关键字

add $t0, $zero, $t1  ---> move $t0, $t1
add $t0, $zero, $zero  ---> li $t0, 0
addi $t0, $t0, -1   ---> subi $t0, $t0, 1

为什么??我会完全使用“移动”或“li”等,而不是一直使用all ADD。这是惯例吗?如果是这样的话,有人能解释一下为什么以这种方式使用Add更好吗?

Add$t0,$t0,$t1
并不等同于
move$t0,$t1
[我修正了它]是的,我的意思是像Add$t0,$零,$t1。只是一个小小的错误,可能是一个没有移动指令的汇编语言的重复。
move
li
、和
subi
、IIRC都是伪指令(即没有对应的操作码),映射到左边的版本(或类似的东西)当翻译成机器代码时。@Mike这是因为MIPS的第一个设计原则:。当你可以通过另一个简单的指令实现这一点时,你不需要移动。许多其他RISC架构也遵循这一点