0
我一直在嘗試使用堆棧在MIPS中複製一個字數組,出於某種原因,它不工作,我無法弄清楚爲什麼......請幫助,謝謝! :)MIPS嘗試使用堆棧複製陣列
.data
array: .word 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
.word 21, 23, 25, 27, 29, 31, 33, 35, 37, 39
.word 41, 43, 45, 47, 49, 51, 53, 55, 57, 59
length: .word 30
array2: .space 120
text: .asciiz "\n\nArray 1 is: \n\n"
text2: .asciiz "\n\nArray 2 is: \n\n"
.text
.globl main
main:
la $t0, array
li $t1, 0
lw $t2, length
la $t3, array2
loopToPushOntoStack:
lw $t4, ($t0) #load first element of the array onto t4
sub $sp, $sp, 4 #move stack pointer down by 4
sw $t4, ($sp) #store t4 onto stack
add $t0, $t0, 4 #increment array pointer by 4
add $t1, $t1, 1 #increment counter by 1
blt $t1, $t2, loopToPushOntoStack
Reset:
la $t0, array
li $t1, 0
lw $t2, length
loopToPopStack:
lw $t4 ($sp)
move $a0, $t4
li $v0, 1
syscall
addu $sp, $sp, 4
sw $t4, ($t0)
sw $t4, ($t3)
add $t0, $t0, 4
add $t3, $t3, 4
add $t1, $t1, 1
blt $t1, $t2, loopToPopStack
la $s3, text
move $a0, $s3
li $v0, 4
syscall
li $t1, 0
printArrayOne:
lw $s4, ($t0)
move $a0, $s4
li $v0, 1
syscall
add $t0, $t0, 4
add $t1, $t1, 1
blt $t1, $t2, printArrayOne
la $s4, text2
move $a0, $s4
li $v0, 4
syscall
li $t1, 0
printArrayTwo:
lw $s5, ($t3)
move $a0, $s5
li $v0, 1
syscall
add $t3, $t3, 4
add $t1, $t1, 1
blt $t1, $t2, printArrayTwo
exit:
li $v0, 10
syscall
p.s.我認爲問題發生在以下功能:
loopToPopStack:
lw $t4 ($sp)
move $a0, $t4
li $v0, 1
syscall
addu $sp, $sp, 4
sw $t4, ($t0)
sw $t4, ($t3)
add $t0, $t0, 4
add $t3, $t3, 4
add $t1, $t1, 1
blt $t1, $t2, loopToPopStack
但我無法弄清楚它是什麼問題哈哈。