将寄存器设置为 1 的 MIPS 指令
MIPS instructions to set a register to 1
这个问题在过去的几篇论文中出现过,但我在互联网上找不到任何相关信息。
哪6条单指令MIPS可以设置$v1来保存1的十进制值?
针对常见的误解,li
、la
或move
不是只是一条指令,而是伪指令,需要多个要执行的机器指令。正因为如此,我猜他们不是一个选择。
这是可以做这种事情的说明
addi $v1, $zero, 1
addui $v1, $zero, 1
ori $v1, $zero, 1
xori $v1, $zero, 1
# these use comparison
slt $v1, $zero, # the last one can be any non-empty register
slti $v1, $zero, 1
sltu $v1, $zero, # the last one can be any non-empty register
sltiu $v1, $zero, 1
# these use memory
lb $v1, one($zero)
lbu $v1, one($zero)
lh $v1, one($zero)
lhu $v1, one($zero)
lw $v1, one($zero)
one: .word 1
使用伪指令计数时,li
和 la
也可用。
这个问题在过去的几篇论文中出现过,但我在互联网上找不到任何相关信息。
哪6条单指令MIPS可以设置$v1来保存1的十进制值?
针对常见的误解,li
、la
或move
不是只是一条指令,而是伪指令,需要多个要执行的机器指令。正因为如此,我猜他们不是一个选择。
这是可以做这种事情的说明
addi $v1, $zero, 1
addui $v1, $zero, 1
ori $v1, $zero, 1
xori $v1, $zero, 1
# these use comparison
slt $v1, $zero, # the last one can be any non-empty register
slti $v1, $zero, 1
sltu $v1, $zero, # the last one can be any non-empty register
sltiu $v1, $zero, 1
# these use memory
lb $v1, one($zero)
lbu $v1, one($zero)
lh $v1, one($zero)
lhu $v1, one($zero)
lw $v1, one($zero)
one: .word 1
使用伪指令计数时,li
和 la
也可用。