assembly 如何将“if x>= y”转换为MIPS汇编?[duplicate]

pinkon5k  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(134)

此问题在此处已有答案

MIPS if greater or equals to(1个答案)
两个月前关门了。
基本上,我是MIPS的新手,我遇到了这个问题。
您将如何翻译MIPS中的“if x〉=y”,并需要假设x位于$t0中,y位于$t1中
这是我尝试过的

bge $t0, $t1, label

我不确定我做得对不对。

iqjalb3h

iqjalb3h1#

如果您有此代码:

if x>=y
    // do something
  else
    // do otherthing
  endif

您可以将其写为:

bge $t0, $t1, taken  # branch to taken if x>=y
  # do otherthing
  b endif
taken:
  # do something
endif:

或者您可以重写它以保持高级语句的顺序,使用否定条件跳转:

blt $t0, $t1, else  # branch to else  if x<y
  # do something
  b endif
else:
  # do otherthing
endif:

如果你没有“else”部分,那么第二种方法会导致更少的代码。

if x>=y
    // do something
  endif

可以翻译成:

blt $t0, $t1, endif  # branch to endif  if x<y
  # do something
endif:

相关问题