Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组始终指向第一个索引,即使索引是递增的_Arrays_Mips - Fatal编程技术网

Arrays 数组始终指向第一个索引,即使索引是递增的

Arrays 数组始终指向第一个索引,即使索引是递增的,arrays,mips,Arrays,Mips,出于某种原因,$t3总是输出1,即使$t2是递增的。我不明白为什么 代码如下: .data myArray1: .word 1, 2, 3, 4, 5 myArray2: .word 0, 0, 0, 0, 0 newline: .asciiz "\n" .text main: li $s1, 5 li $s0, 1 la $a1, myArray1 la $a2, myArray2 loop: beq $s0, $s1, exit sll $t0, $s0, 2 # $t0 = i

出于某种原因,$t3总是输出1,即使$t2是递增的。我不明白为什么

代码如下:

.data
myArray1: .word 1, 2, 3, 4, 5
myArray2: .word 0, 0, 0, 0, 0
newline: .asciiz "\n"
.text
main:
li  $s1, 5
li  $s0, 1
la  $a1, myArray1
la  $a2, myArray2
loop:
beq $s0, $s1, exit  
sll $t0, $s0, 2 # $t0 = i * 4
sub $t2, $s0, 1
sll $t2, $t2, 2 # $t2 = (i-1)*4
add $t1, $a1, $t0   # $t1 = A[i]
add $t3, $a1, $t2   # $t3 = A[i-1]

move $a0, $t2
li  $v0, 1
syscall
jal newLine

lw  $a0, ($t3)
li  $v0, 1
syscall
jal newLine

add $t4, $a2, $t0   # $t4 = B[i]
lw  $t5, ($t3)
lw  $t6, ($t4)
add $t7, $t5, $t6 # $t7 = A[i-1] - B[i]
sw  $t7, ($t1)  # A[i] = $t7
addi    $s0, $s0, 1
j   loop
exit:
li  $v0, 10
syscall
newLine:
la  $a0, newline
li  $v0, 4
syscall
jr  $ra

我在输出$t3和$t2时添加了一段代码,即使$t2在上升,$t3也从未改变过

我真的不确定您要做什么。但是实际发生的是,$t7总是在sw$t7处有值1,$t1 A[i]=$t7,所以您一直用1覆盖myArray1中的下一个值

考虑情况i==1:

A[i-1]==A[0]==1 B[i]==B[1]==0 A[i-1]+B[i]==1+0==1 然后,在下一次迭代中,当i==2时:

A[i-1]==A[1]==1,因为您在上一次迭代中将其设置为1 B[i]==B[2]==0 A[i-1]+B[i]==1+0==1 等等