在MIPS中创建(和访问)数组

hod*_*smr 7 arrays assembly mips mars-simulator

我正在尝试在MIPS Assembly中创建一个数组,然后将所有元素添加到一起.但是,当我尝试组装以下内容时,它说

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:
Run Code Online (Sandbox Code Playgroud)

谢谢!

Car*_*rum 9

你必须把这一行:

list: .word 3, 2, 1, 0, 1, 2
Run Code Online (Sandbox Code Playgroud)

进入.data部分.查看此快速教程.


Joh*_*ler 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
Run Code Online (Sandbox Code Playgroud)