这是我们给出的原始代码。我们需要将以下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