繁体   English   中英

如何将嵌套的 If/AND 语句转换为 MIPS?

[英]How to Translate Nested If/AND Statements into MIPS?

作为我正在处理的课程项目的一部分,必须包含调试功能。 我在处理一些 if/and 语句时遇到问题。 这是我写的:

/以前的代码,用于查找状态矩阵包含 1 的位置/

`beq  s0, 1, _debug_mode  #debug feature is ON if s0 contains 1
_debug_mode:  
li   a0, 0            #tile flipped to say NOT revealed
_else:  
li   a0, 1  

` 我没有得到我期望的结果,所以我的想法是代码写错了。 任何见解都会很棒!

这适用于最小的 C 代码:

if (debug) 
    status = !status;

在 MIPS 中,可以这样写(假设 s0 是​​调试,a0 是状态):

  blez s0, no_debug_mode
  xori a0, a0, 1
no_debug_mode:
   # ...

或者更详细

  blez s0, no_debug_mode
  blez a0, set_status_high
  li a0, 0
  j no_debug_mode
set_status_high:
  li a0, 1
no_debug_mode:
  # ...

您仅在其中一个值上发布了分支并且没有使用否定的示例,因此它会给出错误的结果。 此外,您在_debug_mode标签的末尾没有跳转,因此_else始终执行。

我已经有一段时间没有做 MIPS 了。 如果需要分支延迟时隙,则必须将它们添加到上述两个答案中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM