New Hardware Git
This commit is contained in:
105
CPU/Flow/mips-cpu-logisim-master/test/sort.asm
Normal file
105
CPU/Flow/mips-cpu-logisim-master/test/sort.asm
Normal file
@@ -0,0 +1,105 @@
|
||||
.data
|
||||
|
||||
|
||||
.text
|
||||
li $s0, 0 # data addr
|
||||
li $s1, 0 # offset
|
||||
li $s2, 50 # $s2 : n
|
||||
li $sp, 4092
|
||||
nloop:
|
||||
beq $s2, $zero, exitnloop
|
||||
add $t0, $s0, $s1
|
||||
|
||||
sw $s2, 0($t0)
|
||||
|
||||
add $s1, $s1, 4
|
||||
add $s2, $s2, -1
|
||||
j nloop
|
||||
exitnloop:
|
||||
|
||||
li $a0, 0
|
||||
li $a1, 50 #<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
jal sort
|
||||
|
||||
li $v0, 10
|
||||
syscall
|
||||
|
||||
|
||||
|
||||
|
||||
#void swap(int v[], int k) {
|
||||
# int temp = v[k];
|
||||
# v[k] = v[k+1];
|
||||
# v[k+1] = temp;
|
||||
#}
|
||||
swap:
|
||||
sll $t1, $a1, 2
|
||||
add $t1, $t1, $a0 #$t1:v[k]
|
||||
|
||||
lw $t0, 0($t1) #$t0:temp
|
||||
lw $t2, 4($t1) #$t2:v[k+1]
|
||||
|
||||
sw $t2, 0($t1)
|
||||
sw $t0, 4($t1)
|
||||
|
||||
jr $ra
|
||||
|
||||
sort:
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
addi $sp, $sp, -20
|
||||
sw $ra, 16($sp)
|
||||
sw $s3, 12($sp)
|
||||
sw $s2, 8($sp)
|
||||
sw $s1, 4($sp)
|
||||
sw $s0, 0($sp)
|
||||
|
||||
#<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
move $s2, $a0 # $s2 : $a0
|
||||
move $s3, $a1 # $s3 : $a1
|
||||
|
||||
move $s0, $zero # $s0 : i
|
||||
for1tst:
|
||||
slt $t0, $s0, $s3
|
||||
beq $t0, $zero, exit1
|
||||
|
||||
addi $s1, $s0, -1 # $s1 : j
|
||||
for2tst:
|
||||
slti $t0, $s1, 0
|
||||
bne $t0, $zero, exit2
|
||||
|
||||
sll $t1, $s1, 2
|
||||
add $t2, $s2, $t1 # $t0 : v[j] addr
|
||||
lw $t3, 0($t2) # $t1 : v[j]
|
||||
lw $t4, 4($t2) # $t2 : v[j+1]
|
||||
|
||||
slt $t0, $t4, $t3
|
||||
beq $t0, $zero, exit2
|
||||
|
||||
move $a0, $s2
|
||||
move $a1, $s1
|
||||
jal swap
|
||||
|
||||
addi $s1, $s1, -1
|
||||
j for2tst
|
||||
|
||||
exit2:
|
||||
addi $s0, $s0, 1
|
||||
j for1tst
|
||||
|
||||
exit1:
|
||||
lw $s0, 0($sp)
|
||||
lw $s1, 4($sp)
|
||||
lw $s2, 8($sp)
|
||||
lw $s3, 12($sp)
|
||||
lw $ra, 16($sp)
|
||||
addi $sp, $sp, 20
|
||||
|
||||
jr $ra
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user