如何将此代码从C转换为MIPS?

时间:2016-10-12 23:12:07

标签: c mips

这是我们给出的原始代码。我们需要将以下C代码转换为MIPS。

## int get_singleton(int value) {
##   for (int i = 0 ; i < GRID_SQUARED ; ++ i) {
##   if (value == (1<<i)) {
##      return i;
##   }
##   }
##   return 0;
## }
get_singleton:
    jr  $ra

到目前为止,我有这个用于我的翻译,但我一直陷入无限循环。

main:
    li  $a0, 0x010
    jal get_singleton

get_singleton:
    li  $v0, 0          # i
    li  $t1, 1
gs_loop:sll $t2, $t1, $v0       # (1<<i)
    beq $t2, $a0, get_singleton_done
    add $v0, $v0, 1
    blt $v0, 9, gs_loop     # repeat if (i < 9)
get_singleton_done:
    jr  $ra

0 个答案:

没有答案