OpenCores
URL https://opencores.org/ocsvn/mips32/mips32/trunk

Subversion Repositories mips32

[/] [mips32/] [trunk/] [Classic-MIPS/] [TestBenchs/] [stack_sort/] [code.smd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jjf
MAIN:
2
addi $s0, $zero, 20
3
addi $s3, $zero, 0
4
addi $s4, $zero, 0
5
##set the stack address
6
ori $sp, $zero, 128
7
ori $s1, $zero, 0
8
ori $fp, $zero, 256
9
ori $s2, $zero, 0
10
START:
11
beq $s3, $s0, SORTDONE
12
lw $a0, 0($s4)
13
jal SORT
14
addi $s3, $s3, 1
15
addi $s4, $s4, 4
16
j START
17
 
18
SORTDONE:
19
#flush the cache
20
lw $t0, 2176($zero)
21
lw $t0, 2208($zero)
22
lw $t0, 2240($zero)
23
nop
24
nop
25
nop
26
 
27
 
28
SORT:
29
#pass the parameter
30
ori $t0, $a0, 0
31
COMPARE:
32
beq $s1, $zero, EMPTY
33
#pop a element
34
addi $sp, $sp, -4
35
addi $s1, $s1, -1
36
lw $t1, 0($sp)
37
#compare
38
slt $t2, $t0, $t1
39
bne $t2, $zero, OVER
40
#if $t0 > $t1, push $t1 to second stack
41
sw $t1, 0($fp)
42
addi $fp, $fp, 4
43
addi $s2, $s2, 1
44
j COMPARE
45
 
46
OVER:
47
#push the two element
48
sw $t1, 0($sp)
49
sw $t0, 4($sp)
50
addi $sp, $sp, 8
51
addi $s1, $s1, 2
52
j COPY
53
 
54
#when the stack is empty
55
EMPTY:
56
sw $t0, 0($sp)
57
addi $sp, $sp, 4
58
addi $s1, $s1, 1
59
j COPY
60
 
61
#copy stack2 to stack0
62
COPY:
63
beq $s2, $zero, DONE
64
addi $fp, $fp, -4
65
addi $s2, $s2, -1
66
lw $t0, 0($fp)
67
sw $t0, 0($sp)
68
addi $sp, $sp, 4
69
addi $s1, $s1, 1
70
j COPY
71
 
72
DONE:
73
jr $ra

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.