diff options
Diffstat (limited to 'lcc/sparc/solaris/tst/sort.sbk')
-rwxr-xr-x | lcc/sparc/solaris/tst/sort.sbk | 404 |
1 files changed, 202 insertions, 202 deletions
diff --git a/lcc/sparc/solaris/tst/sort.sbk b/lcc/sparc/solaris/tst/sort.sbk index 8f67ef5..709dd46 100755 --- a/lcc/sparc/solaris/tst/sort.sbk +++ b/lcc/sparc/solaris/tst/sort.sbk @@ -1,202 +1,202 @@ -.section ".data"
-.global in
-.type in,#object
-.align 4
-in:
-.word 0xa
-.word 0x20
-.word 0xffffffff
-.word 0x237
-.word 0x3
-.word 0x12
-.word 0x1
-.word 0xffffffcd
-.word 0x315
-.word 0x0
-.size in,40
-.global main
-.section ".text"
-.align 4
-main:
-save %sp,-96,%sp
-set in,%o0
-set 10,%o1
-call sort; nop
-mov %g0,%i5
-ba .L5; nop
-.L2:
-sll %i5,2,%i4
-set in,%i3
-ld [%i4+%i3],%o0
-call putd; nop
-set 10,%o0
-call putchar; nop
-.L3:
-add %i5,1,%i5
-.L5:
-mov %i5,%i4
-set 10,%i3
-cmp %i4,%i3; blu .L2; nop
-mov %g0,%i0
-.L1:
-ret; restore
-.type main,#function
-.size main,.-main
-.global putd
-.align 4
-putd:
-save %sp,-96,%sp
-cmp %i0,0; bge .L7; nop
-set 45,%o0
-call putchar; nop
-neg %i0,%i0
-.L7:
-sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%i5
-cmp %i5,0; be .L9; nop
-sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%o0
-call putd; nop
-.L9:
-sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%g1
-; smul %g1,10,%g1; sub %i0,%g1,%i5
-add %i5,48,%o0
-call putchar; nop
-mov %g0,%i0
-.L6:
-ret; restore
-.type putd,#function
-.size putd,.-putd
-.global sort
-.align 4
-sort:
-save %sp,-96,%sp
-set xx,%i5
-st %i0,[%i5]
-mov %i0,%o0
-mov %g0,%o1
-sub %i1,1,%i5
-mov %i5,%i1
-mov %i5,%o2
-call quick; nop
-mov %g0,%i0
-.L11:
-ret; restore
-.type sort,#function
-.size sort,.-sort
-.global quick
-.align 4
-quick:
-save %sp,-96,%sp
-cmp %i1,%i2; bl .L13; nop
-ba .L12; nop
-.L13:
-mov %i0,%o0
-mov %i1,%o1
-mov %i2,%o2
-call partition; nop
-mov %o0,%i5
-mov %i0,%o0
-mov %i1,%o1
-sub %i5,1,%o2
-call quick; nop
-mov %i0,%o0
-add %i5,1,%o1
-mov %i2,%o2
-call quick; nop
-mov %g0,%i0
-.L12:
-ret; restore
-.type quick,#function
-.size quick,.-quick
-.global partition
-.align 4
-partition:
-save %sp,-96,%sp
-add %i2,1,%i2
-mov %i1,%i4
-sll %i4,2,%i3
-ld [%i3+%i0],%i5
-ba .L17; nop
-.L16:
-add %i1,1,%i1
-ba .L20; nop
-.L19:
-add %i1,1,%i1
-.L20:
-sll %i1,2,%i3
-ld [%i3+%i0],%i3
-cmp %i3,%i5; bl .L19; nop
-sub %i2,1,%i2
-ba .L23; nop
-.L22:
-sub %i2,1,%i2
-.L23:
-sll %i2,2,%i3
-ld [%i3+%i0],%i3
-cmp %i3,%i5; bg .L22; nop
-cmp %i1,%i2; bge .L25; nop
-sll %i1,2,%i3
-add %i3,%i0,%o0
-sll %i2,2,%i3
-add %i3,%i0,%o1
-call exchange; nop
-.L25:
-.L17:
-cmp %i1,%i2; bl .L16; nop
-sll %i4,2,%i3
-add %i3,%i0,%o0
-sll %i2,2,%i3
-add %i3,%i0,%o1
-call exchange; nop
-mov %i2,%i0
-.L15:
-ret; restore
-.type partition,#function
-.size partition,.-partition
-.global exchange
-.align 4
-exchange:
-save %sp,-96,%sp
-set .L28,%o0
-set xx,%i4
-ld [%i4],%i4
-mov %i0,%i3
-sub %i3,%i4,%i3
-sra %i3,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i3,4,%o1
-mov %i1,%i3
-sub %i3,%i4,%i4
-sra %i4,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i4,4,%o2
-call printf; nop
-ld [%i0],%i5
-ld [%i1],%i4
-st %i4,[%i0]
-st %i5,[%i1]
-mov %g0,%i0
-.L27:
-ret; restore
-.type exchange,#function
-.size exchange,.-exchange
-.section ".bss"
-.global xx
-.type xx,#object
-.size xx,4
-.common xx,4,4
-.section ".rodata"
-.align 1
-.L28:
-.byte 101
-.byte 120
-.byte 99
-.byte 104
-.byte 97
-.byte 110
-.byte 103
-.byte 101
-.byte 40
-.byte 37
-.byte 100
-.byte 44
-.byte 37
-.byte 100
-.byte 41
-.byte 10
-.byte 0
+.section ".data" +.global in +.type in,#object +.align 4 +in: +.word 0xa +.word 0x20 +.word 0xffffffff +.word 0x237 +.word 0x3 +.word 0x12 +.word 0x1 +.word 0xffffffcd +.word 0x315 +.word 0x0 +.size in,40 +.global main +.section ".text" +.align 4 +main: +save %sp,-96,%sp +set in,%o0 +set 10,%o1 +call sort; nop +mov %g0,%i5 +ba .L5; nop +.L2: +sll %i5,2,%i4 +set in,%i3 +ld [%i4+%i3],%o0 +call putd; nop +set 10,%o0 +call putchar; nop +.L3: +add %i5,1,%i5 +.L5: +mov %i5,%i4 +set 10,%i3 +cmp %i4,%i3; blu .L2; nop +mov %g0,%i0 +.L1: +ret; restore +.type main,#function +.size main,.-main +.global putd +.align 4 +putd: +save %sp,-96,%sp +cmp %i0,0; bge .L7; nop +set 45,%o0 +call putchar; nop +neg %i0,%i0 +.L7: +sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%i5 +cmp %i5,0; be .L9; nop +sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%o0 +call putd; nop +.L9: +sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%g1 +; smul %g1,10,%g1; sub %i0,%g1,%i5 +add %i5,48,%o0 +call putchar; nop +mov %g0,%i0 +.L6: +ret; restore +.type putd,#function +.size putd,.-putd +.global sort +.align 4 +sort: +save %sp,-96,%sp +set xx,%i5 +st %i0,[%i5] +mov %i0,%o0 +mov %g0,%o1 +sub %i1,1,%i5 +mov %i5,%i1 +mov %i5,%o2 +call quick; nop +mov %g0,%i0 +.L11: +ret; restore +.type sort,#function +.size sort,.-sort +.global quick +.align 4 +quick: +save %sp,-96,%sp +cmp %i1,%i2; bl .L13; nop +ba .L12; nop +.L13: +mov %i0,%o0 +mov %i1,%o1 +mov %i2,%o2 +call partition; nop +mov %o0,%i5 +mov %i0,%o0 +mov %i1,%o1 +sub %i5,1,%o2 +call quick; nop +mov %i0,%o0 +add %i5,1,%o1 +mov %i2,%o2 +call quick; nop +mov %g0,%i0 +.L12: +ret; restore +.type quick,#function +.size quick,.-quick +.global partition +.align 4 +partition: +save %sp,-96,%sp +add %i2,1,%i2 +mov %i1,%i4 +sll %i4,2,%i3 +ld [%i3+%i0],%i5 +ba .L17; nop +.L16: +add %i1,1,%i1 +ba .L20; nop +.L19: +add %i1,1,%i1 +.L20: +sll %i1,2,%i3 +ld [%i3+%i0],%i3 +cmp %i3,%i5; bl .L19; nop +sub %i2,1,%i2 +ba .L23; nop +.L22: +sub %i2,1,%i2 +.L23: +sll %i2,2,%i3 +ld [%i3+%i0],%i3 +cmp %i3,%i5; bg .L22; nop +cmp %i1,%i2; bge .L25; nop +sll %i1,2,%i3 +add %i3,%i0,%o0 +sll %i2,2,%i3 +add %i3,%i0,%o1 +call exchange; nop +.L25: +.L17: +cmp %i1,%i2; bl .L16; nop +sll %i4,2,%i3 +add %i3,%i0,%o0 +sll %i2,2,%i3 +add %i3,%i0,%o1 +call exchange; nop +mov %i2,%i0 +.L15: +ret; restore +.type partition,#function +.size partition,.-partition +.global exchange +.align 4 +exchange: +save %sp,-96,%sp +set .L28,%o0 +set xx,%i4 +ld [%i4],%i4 +mov %i0,%i3 +sub %i3,%i4,%i3 +sra %i3,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i3,4,%o1 +mov %i1,%i3 +sub %i3,%i4,%i4 +sra %i4,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i4,4,%o2 +call printf; nop +ld [%i0],%i5 +ld [%i1],%i4 +st %i4,[%i0] +st %i5,[%i1] +mov %g0,%i0 +.L27: +ret; restore +.type exchange,#function +.size exchange,.-exchange +.section ".bss" +.global xx +.type xx,#object +.size xx,4 +.common xx,4,4 +.section ".rodata" +.align 1 +.L28: +.byte 101 +.byte 120 +.byte 99 +.byte 104 +.byte 97 +.byte 110 +.byte 103 +.byte 101 +.byte 40 +.byte 37 +.byte 100 +.byte 44 +.byte 37 +.byte 100 +.byte 41 +.byte 10 +.byte 0 |