sort.sbk (2927B)
1 .section ".data" 2 .global in 3 .type in,#object 4 .align 4 5 in: 6 .word 0xa 7 .word 0x20 8 .word 0xffffffff 9 .word 0x237 10 .word 0x3 11 .word 0x12 12 .word 0x1 13 .word 0xffffffcd 14 .word 0x315 15 .word 0x0 16 .size in,40 17 .global main 18 .section ".text" 19 .align 4 20 main: 21 save %sp,-96,%sp 22 set in,%o0 23 set 10,%o1 24 call sort; nop 25 mov %g0,%i5 26 ba .L5; nop 27 .L2: 28 sll %i5,2,%i4 29 set in,%i3 30 ld [%i4+%i3],%o0 31 call putd; nop 32 set 10,%o0 33 call putchar; nop 34 .L3: 35 add %i5,1,%i5 36 .L5: 37 mov %i5,%i4 38 set 10,%i3 39 cmp %i4,%i3; blu .L2; nop 40 mov %g0,%i0 41 .L1: 42 ret; restore 43 .type main,#function 44 .size main,.-main 45 .global putd 46 .align 4 47 putd: 48 save %sp,-96,%sp 49 cmp %i0,0; bge .L7; nop 50 set 45,%o0 51 call putchar; nop 52 neg %i0,%i0 53 .L7: 54 sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%i5 55 cmp %i5,0; be .L9; nop 56 sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%o0 57 call putd; nop 58 .L9: 59 sra %i0,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i0,10,%g1 60 ; smul %g1,10,%g1; sub %i0,%g1,%i5 61 add %i5,48,%o0 62 call putchar; nop 63 mov %g0,%i0 64 .L6: 65 ret; restore 66 .type putd,#function 67 .size putd,.-putd 68 .global sort 69 .align 4 70 sort: 71 save %sp,-96,%sp 72 set xx,%i5 73 st %i0,[%i5] 74 mov %i0,%o0 75 mov %g0,%o1 76 sub %i1,1,%i5 77 mov %i5,%i1 78 mov %i5,%o2 79 call quick; nop 80 mov %g0,%i0 81 .L11: 82 ret; restore 83 .type sort,#function 84 .size sort,.-sort 85 .global quick 86 .align 4 87 quick: 88 save %sp,-96,%sp 89 cmp %i1,%i2; bl .L13; nop 90 ba .L12; nop 91 .L13: 92 mov %i0,%o0 93 mov %i1,%o1 94 mov %i2,%o2 95 call partition; nop 96 mov %o0,%i5 97 mov %i0,%o0 98 mov %i1,%o1 99 sub %i5,1,%o2 100 call quick; nop 101 mov %i0,%o0 102 add %i5,1,%o1 103 mov %i2,%o2 104 call quick; nop 105 mov %g0,%i0 106 .L12: 107 ret; restore 108 .type quick,#function 109 .size quick,.-quick 110 .global partition 111 .align 4 112 partition: 113 save %sp,-96,%sp 114 add %i2,1,%i2 115 mov %i1,%i4 116 sll %i4,2,%i3 117 ld [%i3+%i0],%i5 118 ba .L17; nop 119 .L16: 120 add %i1,1,%i1 121 ba .L20; nop 122 .L19: 123 add %i1,1,%i1 124 .L20: 125 sll %i1,2,%i3 126 ld [%i3+%i0],%i3 127 cmp %i3,%i5; bl .L19; nop 128 sub %i2,1,%i2 129 ba .L23; nop 130 .L22: 131 sub %i2,1,%i2 132 .L23: 133 sll %i2,2,%i3 134 ld [%i3+%i0],%i3 135 cmp %i3,%i5; bg .L22; nop 136 cmp %i1,%i2; bge .L25; nop 137 sll %i1,2,%i3 138 add %i3,%i0,%o0 139 sll %i2,2,%i3 140 add %i3,%i0,%o1 141 call exchange; nop 142 .L25: 143 .L17: 144 cmp %i1,%i2; bl .L16; nop 145 sll %i4,2,%i3 146 add %i3,%i0,%o0 147 sll %i2,2,%i3 148 add %i3,%i0,%o1 149 call exchange; nop 150 mov %i2,%i0 151 .L15: 152 ret; restore 153 .type partition,#function 154 .size partition,.-partition 155 .global exchange 156 .align 4 157 exchange: 158 save %sp,-96,%sp 159 set .L28,%o0 160 set xx,%i4 161 ld [%i4],%i4 162 mov %i0,%i3 163 sub %i3,%i4,%i3 164 sra %i3,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i3,4,%o1 165 mov %i1,%i3 166 sub %i3,%i4,%i4 167 sra %i4,31,%g1; wr %g0,%g1,%y; nop; nop; nop; sdiv %i4,4,%o2 168 call printf; nop 169 ld [%i0],%i5 170 ld [%i1],%i4 171 st %i4,[%i0] 172 st %i5,[%i1] 173 mov %g0,%i0 174 .L27: 175 ret; restore 176 .type exchange,#function 177 .size exchange,.-exchange 178 .section ".bss" 179 .global xx 180 .type xx,#object 181 .size xx,4 182 .common xx,4,4 183 .section ".rodata" 184 .align 1 185 .L28: 186 .byte 101 187 .byte 120 188 .byte 99 189 .byte 104 190 .byte 97 191 .byte 110 192 .byte 103 193 .byte 101 194 .byte 40 195 .byte 37 196 .byte 100 197 .byte 44 198 .byte 37 199 .byte 100 200 .byte 41 201 .byte 10 202 .byte 0