MIPS架构下实现通用嵌套for循环,现有栈实现方案运行异常
MIPS通用可复用for循环实现异常
开发背景
近期尝试在MIPS架构下编写可复用的通用for循环逻辑,但现有实现始终无法正常运行。最初计划依托对栈机制的理解完成循环控制,但当前实现逻辑存在明显错误,最终要实现的功能对应如下C语言代码:
for(i=0; i<10; i++){ for(j = i; j<10; j++){ acc = acc + a[j]; } }
当前用于实现通用for功能的异常代码
for: addi $sp, $sp, -4 sw $a1, ($sp) addi $sp, $sp, -4 sw $a2, ($sp) addi $t0, $a2, 0 la $s7, ($ra) jr $s7 counter: addi $t0, $t0, 1 jr $s7 increment: blt $t0, $a1, counter addi $sp, $sp, 4 addi $sp, $sp, 4 jr $ra
预期调用逻辑
# for(i=0; i<10; i++) addi $a1, $zero, 9 la $a2, ($s0) addi $t3, $zero, 0 sw $t3, ($s0) jal for sw $a2, ($s0) # for(j = i; j<10; j++) addi $a1, $zero, 9 la $a2, ($s1) lw $t2, ($s0) addi $a2, $t2, 0 jal for # acc = acc + a[j] la $s3, vector add $t4, $zero, $t1 jal set_address lw $t4, ($s3) add $t3, $t3, $t4 # j++ jal increment lw $a2, ($sp) addi $sp, $sp, 4 lw $a1, ($sp) # i++ jal increment
备注
- 原代码附带的非英文注释已全部移除,避免内容混淆
- 清楚当前实现未遵循编程规范,此前未系统学习过相关要求
- 若该方案无法调试通过,将采用其他方式完成需求
内容的提问来源于stack exchange,提问作者Nuwat
相关产品推荐
相关产品推荐

