【发布时间】:2013-03-13 01:10:22
【问题描述】:
MIPS 提供分支指令,如相等时分支、不等于寄存器时分支、小于或等于 0 时分支、大于或等于 0 时分支等...所有分支指令仅使用两个操作数还有一个条件。如果我们在 if 语句中突然遇到多个条件会发生什么。
所以问题是如何编写 MIPS 代码:
if( (a<b) & ( b>c ) || (c==d)) {
}
else
{
}
请帮忙处理 if 语句中的这种多重条件。
【问题讨论】:
-
想一想如何重构上面的 C 代码,以便每个
if... 只有一个条件项 -
这会限制使用 MIPS 设计编译器。现在我正在尝试为“if”和“while”语句构建一个编译器。
-
一旦你重组了 C 代码,你应该很清楚如何在汇编程序中实现等效。
-
我们只能在和条件下进行重组
-
这不是 MIPS 或
if条件所独有的。阅读一下编译器设计中的表达式评估,希望它会变得更清晰。
标签: if-statement assembly conditional-statements mips