这是使用mips指令按降序排序冒泡的代码。我一直得到同样的错误,但我不确定我做错了什么。
.data
.align 4
Input_data: .word 2, 0, -7, -1, 3, 8, -4, 10
.word -9, -16, 15, 13, 1, 4, -3, 14
.word -8, -10, -15, 6, -13, -5, 9, 12
.word -11, -14, -6, 11, 5, 7, -2, -12
Output_data: .word 0, 0, 0, 0, 0, 0, 0, 0
.word 0, 0, 0, 0, 0, 0, 0, 0
.word 0, 0, 0, 0, 0, 0, 0, 0
.word 0, 0, 0, 0, 0, 0, 0, 0
.text
.globl main
.align 4
main:
la $t0, Input_data #address of input/output data
la $t1, Output_data
addu $t2, $t1, 128 #address of output data last word
li $s0, 1 #index of input data
li $s1, 32 #index of output data
L1: #compare
lw $s2, 0($t0) #load 2 words from input data
lw $s3, 4($t1)
ble $s2, $s3, L2 #compare s2, s3. If s2 is smaller, jump to L2
li $s4, 31
beq $s0, $s4, L3 #if the counter is 31, jump to L3
addu $t0, $t0, 4 #input data pointer increment
addu $s0, $s0, 1 #input index increment
j L1
L2: #swap orders of input data
sw $s2, 4($t0)
sw $s3, 0($t0)
addu $t0, $t0, 4
addu $s0, $s0, 1
j L1
L3: #store smallest value in output data
lw $s2, 4($t0)
sw $s2, 0($t2) #store smallest values in backwards order
subu $t2, $t2, 4
subu $s1, $s1, 1
li $s5, 1
beq $s1, $s5, end
la $t0, Input_data
li $s0, 1
j L1
end:
j end
PC = 0x00400064
发生异常数据/堆栈中的错误地址读取:0x10040000
PC = 0x0040003c
发生异常数据/堆栈中的错误地址读取:0x10040004
PC = 0x00400060
发生异常数据/堆栈中的错误地址读取:0x10040008
这是我不断得到的错误。