14

MIPSアセンブリで配列を作成してから、すべての要素を一緒に追加しようとしています。しかし、以下を組み立てようとすると、

read_arrayの1行目の7番目のエラー:「。word」ディレクティブをテキストセグメントに表示できません。アセンブル:操作がエラーで完了しました。

これが私のアセンブリです:

list: .word 3, 2, 1, 0, 1, 2
li $t0, 0x00000000  #initialize a loop counter to $t0
li $t4, 0x00000005  #last index of array
li $t3, 0x00000000  #this will hold our final sum
la $t1, list  #the address of list[0] is in $t1

loop: addi $t0, $t0, 0x00000001 #index++
  add $t5, $t0, $t0 #array index X2
  add $t5, $t0, $t0 #array index X2 again
  add $t6, $t5, $t1 #4x array index in $t6

  lw $t2, 0($t6)   #load list[index] into $t2
  add $t3, $t3, $t2 #$t3 = $t3 + $t2
  beq $t0, $t4, end
  j loop

end:

ありがとう!

4

2 に答える 2

13

あなたはこの行を置く必要があります:

list: .word 3, 2, 1, 0, 1, 2

セクションに.data。このクイックチュートリアルを確認してください。

于 2010-03-03T03:33:59.877 に答える
6

エラーは、コードセグメントにデータ(.word 3、2)を入れることができないことを示しています。「テキストセグメント」は、「コードセグメント」を意味する古いスタイルの用語ですhttp://en.wikipedia.org/wiki/Code_segment

アセンブラは、データセグメントを宣言し、そこに配列を配置することを求めています。Mipsアセンブラをやったことはありませんが、このようなものになると思います

.data
list: .word 3, 2, 1, 0, 1, 2

.text
start:
li $t0, 0x00000000  #initialize a loop counter to $t0
li $t4, 0x00000005  #last index of array
li $t3, 0x00000000  #this will hold our final sum
la $t1, list  #the address o
于 2010-03-03T03:38:34.263 に答える