web-dev-qa-db-ja.com

MIPSでアレイを作成(およびアクセス)する

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:

ありがとう!

7
hodgesmr

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

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

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

9
Carl Norum

エラーは、コードセグメントにデータ(.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
3
John Knoeller