MIPS汇编简单for循环
问题描述:
我需要将此C代码翻译为MIPS汇编。 这里是C代码:MIPS汇编简单for循环
int tmp = 0;
for (int j = 0; j < 15; ++j)
tmp = tmp * 2 + 3
这是我的MIPS汇编代码。这是一个正确的翻译?如果你看到我想知道的任何错误。
# tmp = $v0
# j = $t0
.globl main
main:
li $v0,0
loop:
bgt $t0,15,exit
addi $t0,$t0,1
mul $t1,$v0,2
add $v0,$t1, 3
j loop
exit:
答
你的循环从0到14,所以你的BGT指令应该是:bgt $t0,14,exit
我想。
。
答
在循环之前,不要将j($ t0)设置为零。
答
.data
mensage: asciiz "Text Test"
newline: asciiz "\n"
.text
# tmp = $v0
# j = $t0
main:
li $t0,0
li $t1,0
li $t3,0
loop:
bgt $t0,15,exit
addi $t0,$t0,1
j loop
mul $t1,$t1,2
add $t3,$t1,3
exit:
li $v0,0
syscall
乘以2的幂使用sll。做**不**使用多国语言 – 2016-04-14 00:13:40