mips 中的循环不起作用?可能是什么问题?
For loop in mips not working ? what could be problem?
我的 Mips 循环代码不工作。当我尝试 运行 这段代码时,这显示我是空白的。可能是什么问题。
.data
.text
.globl main
main:
li $t0,0
for:
ble $t0,5,end //for (int i=0;i<=5;i++)
li $v0,1
move $a0,$t0
syscall
add $t0,$t0,1
j for
end:
li $v0,10
syscall
手动编译 C/pseudo 代码时,尤其是 if 语句和 for 循环的条件,请记住您通常希望在条件不成立时“跳过”代码。在你的例子中你有
//for (int i=0;i<=5;i++)
//{
// ... some code
//}
所以你想在不满足条件的时候跳过for body。当 i 小于或等于 5 时,你必须分支,而不是当 i 大于 5 时分支。
然后你会用这个编译它:
for:
bgt $t0,5,end //for (int i=0;i<=5;i++) so you use bgt instead of ble
...
j for
end:
我的 Mips 循环代码不工作。当我尝试 运行 这段代码时,这显示我是空白的。可能是什么问题。
.data
.text
.globl main
main:
li $t0,0
for:
ble $t0,5,end //for (int i=0;i<=5;i++)
li $v0,1
move $a0,$t0
syscall
add $t0,$t0,1
j for
end:
li $v0,10
syscall
手动编译 C/pseudo 代码时,尤其是 if 语句和 for 循环的条件,请记住您通常希望在条件不成立时“跳过”代码。在你的例子中你有
//for (int i=0;i<=5;i++)
//{
// ... some code
//}
所以你想在不满足条件的时候跳过for body。当 i 小于或等于 5 时,你必须分支,而不是当 i 大于 5 时分支。
然后你会用这个编译它:
for:
bgt $t0,5,end //for (int i=0;i<=5;i++) so you use bgt instead of ble
...
j for
end: