Better format.

This commit is contained in:
unlockable
2024-05-03 23:57:11 +08:00
parent 182a6eb8ae
commit 19d88bfaa9
5 changed files with 136 additions and 133 deletions

View File

@@ -1,66 +1,66 @@
.data
.text
li $v0 5 # read in num
syscall
li $v0, 5 # read in num
syscall
move $s0, $v0 # $s0 is n
move $a0, $v0
li $v0, 9 # malloc
syscall
move $s1, $v0 # $s1 = a
move $s0, $v0 # $s0 is n
move $a0, $v0
li $v0, 9 # malloc
syscall
move $s1, $v0 # $s1 = a
move $t0, $zero # a0 = 0
move $t0, $zero # a0 = 0
move $t0, $zero # i = 0
move $t1, $s1 #t1 = a
read_in_num:
bge $t0, $s0, done_read_in_num # i >= n, break
li $v0, 5 # read in num
syscall
move $t0, $zero # i = 0
move $t1, $s1 #t1 = a
read_in_num:
bge $t0, $s0, done_read_in_num # i >= n, break
li $v0, 5 # read in num
syscall
sw $v0, 0($t1) # a[i] = v0
addi $t0, $t0, 1 # i++
addi $t1, $t1, 4 # t1 += 4
j read_in_num
sw $v0, 0($t1) # a[i] = v0
addi $t0, $t0, 1 # i++
addi $t1, $t1, 4 # t1 += 4
j read_in_num
done_read_in_num:
srl $s2, $s0, 1 # s1 = n / 2
move $t0, $zero # i = 0
move $t1, $s1
done_read_in_num:
srl $s2, $s0, 1 # s1 = n / 2
move $t0, $zero # i = 0
move $t1, $s1
subi $t2, $s0, 1 # t2 = n - 1
sll $t2, $t2, 2 # t2 *= 4
add $t2, $t2, $s1
reverse:
bge $t0, $s2, done_reverse # i >= n / 2, break
lw $t3, 0($t1) # t3 = a[i]
addi $t3, $t3, 1 # t3 += 1
subi $t2, $s0, 1 # t2 = n - 1
sll $t2, $t2, 2 # t2 *= 4
add $t2, $t2, $s1
reverse:
bge $t0, $s2, done_reverse # i >= n / 2, break
lw $t3, 0($t1) # t3 = a[i]
addi $t3, $t3, 1 # t3 += 1
lw $t4, 0($t2) # t4 = a[n - i - 1]
addi $t4, $t4, 1 # t4 += 1
lw $t4, 0($t2) # t4 = a[n - i - 1]
addi $t4, $t4, 1 # t4 += 1
sw $t4, 0($t1)
sw $t3, 0($t2)
sw $t4, 0($t1)
sw $t3, 0($t2)
addi $t0, $t0, 1
addi $t1, $t1, 4
subi $t2, $t2, 4
j reverse
addi $t0, $t0, 1
addi $t1, $t1, 4
subi $t2, $t2, 4
j reverse
done_reverse:
move $t0, $zero
move $t1, $s1
done_reverse:
move $t0, $zero
move $t1, $s1
output:
bge $t0, $s0 done_output
lw $a0, 0($t1)
li $v0 1
syscall
output:
bge $t0, $s0, done_output
lw $a0, 0($t1)
li $v0, 1
syscall
addi $t0, $t0, 1
addi $t1, $t1, 4
j output
addi $t0, $t0, 1
addi $t1, $t1, 4
j output
done_output:
li $v0 17
syscall
done_output:
li $v0, 17
syscall