2017-05-06 3 views
2

を作成する私のコードの一部です:そして、ここなどでソート私はMIPSの単一リンクリストを作成することになっています単一リンクリスト

.data 
STR_NEWLINE: .asciiz  "\n" 
STR_ENTER:  .asciiz  "enter an integer(0 to finish): " 

    .text 
main: 
    sw  $zero,0($sp)    # list_head = 0 
    move $s0,$sp     # list_end adress 
main_loop: 
    la  $a0,STR_ENTER   
    li  $v0,4 
    syscall 

    li  $v0,5     
    syscall 

    blez $v0,bubble_loop   

    addi $sp, $sp, -8    

    sw  $v0,0($sp)    
    sw  $t0,4($sp)    
    move $s0,$sp     

    addi $t0, $t0, -8    
    j  main_loop 

それがうまく機能し、それは、ユーザからの入力を取得し、それらをメモリに保存し、並べ替えて印刷します。しかし、問題は(そうでないかもしれない)私はリンクリスト構造が次のようなものであることを知っているので、本当のリンクリストであるかどうかはわかりません:

|データ| pointerToAnywhere | ... |データ| pointerToAnywhere |

私のコードでは、常に次々と同じようなものなので、次の入力をメモリ内の空の場所に格納できない場合は、ポインタを持つ必要はありません。

要約すると、「addi $ sp、$ sp、-8」ではなく、$ sp =(メモリ内の空き領域)を持つようにコードを改善する必要がありますか?

答えて

0

私の研究の後、私は解決策を見つけたが、実際には何とか見逃してしまった。

li $v0, 9 
li $a0,(number of bytes of storage desired) 
syscall 

syscall 9の結果として、$ v0はブロックのアドレスを取得します。

関連する問題