【发布时间】:2016-03-15 03:38:13
【问题描述】:
我正在用 MIPS 编写一个程序,但我无法在下面写下以下语句。如何在 MIPS 指令集中写出这样的逻辑语句?
return a > b ? a : b;
【问题讨论】:
-
在 MIPS 指令集参考中查找
SLT和BEQ。
标签: mips cpu instructions
我正在用 MIPS 编写一个程序,但我无法在下面写下以下语句。如何在 MIPS 指令集中写出这样的逻辑语句?
return a > b ? a : b;
【问题讨论】:
SLT 和 BEQ。
标签: mips cpu instructions
return :向被调用者返回一些值(如果存在表达式)。A ? B : C :这是条件运算符。如果A 为真(非零),则评估B。否则,将评估 C。如果a 和b 是有符号的32 位整数,应该是这样的:
# assuming
# a = $t0
# b = $t1
# return value = $v0
slt $t2, $t1, $t0 # $t2 = (b < a)
beq $t2, $zero, nottrue # if (!(a > b)) goto nottrue
addui $v0, $t0, $zero # return value = a (not harmful even if executed when jump is taken)
jr $ra # return
sll $zero, $zero, 0 # nop: prevent instruction after branch from being executed
nottrue:
addui $v0, $t1, $zero # return value = b
jr $ra # return
sll $zero, $zero, 0 # nop: prevent instruction after branch from being executed
【讨论】:
首先将其分解为简单的 if 语句,MIPS 是一种汇编语言,因此如果它们很复杂,所有这些都将不起作用,请记住,您的大脑不是编译器,所以尽量不要编写复杂的代码。
【讨论】: