• 締切済み

MIPSでクイックソート

MIPSアセンブリ言語でクイックソートを書いているのですが、うまく動作しません。以下のソース文では、loop2の所がずっとループし、終わる気配がありません。アドバイスをお願いします。 .text .globl main main: li $v0, 0 li $t0, 0 li $t1, 28 loop: slti $s0, $t0, 28 beq $s0, $0, reset lw $t2, list($t0) sw $t2, array($t0) addi $t0, $t0, 4 j loop reset: move $t0, $0 lw $t2, array($t0) lw $t3, array($t1) ave: add $t4, $t2, $t3 li $t5, 2 div $t6, $t4, $t5 loop1: ble $t6, $t2, loop2 addi $t0, $t0, 4 j loop1 loop2: bgt $t6, $t3, change addi $t1, $t1, -4 j loop2 change: bge $t2, $t3, small sw $t2, array($t1) sw $t3, array($t0) j loop1 small: move $s2, $t1 addi $s2, $s2, -4 lw $t3, array($s1) bge $s2, $t0, big j ave big: move $s2, $t0 addi $s2, $s2, 4 bge $s2, $t1, reset2 j ave exit: jr $ra .data list: .word 3, 5, 1, 8, 9, 7, 2 array: .space 128

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1606/2337)
回答No.1

loop2: bgt $t6, $t3, change addi $t1, $t1, -4 j loop2 このループを抜けるのはbgtの条件が成立したときです。ループの中で$t6と$t3の値は全く変化しないと思われますから、bgtの1回目で条件が成立しなければ無限ループに陥るのは当然でしょう。

すると、全ての回答が全文表示されます。

関連するQ&A