MIPSとMARSシミュレーターを使ってアセンブリ言語の基礎を学んでいます。タイトルは私の質問を囲みますが、例を挙げて拡張してみます。キーボードから文字列を読み取りたいとします (最大 200 文字)。私たちは進むべき道を歩まなければなりません
1) 静的データ セグメントに 201 バイトを割り当て、システム コールを実行して文字列を読み取り、「文字列」アドレスで参照します。
.data
string: .space 201
.text
li $v0, 8
la $a0, string
li $a1, 201
syscall
2) sbrk 関数 (MARS でのみ使用可能) によってヒープ上の 201 連続バイトを要求し、入力文字列で埋めます。
li $v0, 9
la $a0, 201
syscall
move $s0, $v0
li $v0, 8
move $a0, $s0
li $a1, 201
syscall
両方の方法の長所と短所は何ですか? MIPS の例では常に 1 番目の方法を見てきましたが、2 番目の方法が使用されていない理由がわかりません。
前もって感謝します :)