sort.sbk (4166B)
1 .data 2 .globl in 3 .align 4 4 .type in,@object 5 in: 6 .long 10 7 .long 32 8 .long -1 9 .long 567 10 .long 3 11 .long 18 12 .long 1 13 .long -51 14 .long 789 15 .long 0 16 .size in,40 17 .globl main 18 .text 19 .align 16 20 .type main,@function 21 main: 22 pushl %ebp 23 pushl %ebx 24 pushl %esi 25 pushl %edi 26 movl %esp,%ebp 27 subl $4,%esp 28 pushl $10 29 pushl $in 30 call sort 31 addl $8,%esp 32 movl $0,-4(%ebp) 33 jmp .LC5 34 .LC2: 35 movl -4(%ebp),%edi 36 pushl in(,%edi,4) 37 call putd 38 addl $4,%esp 39 pushl $10 40 call putchar 41 addl $4,%esp 42 .LC3: 43 incl -4(%ebp) 44 .LC5: 45 movl -4(%ebp),%edi 46 cmpl $10,%edi 47 jb .LC2 48 movl $0,%eax 49 .LC1: 50 movl %ebp,%esp 51 popl %edi 52 popl %esi 53 popl %ebx 54 popl %ebp 55 ret 56 .Lf6: 57 .size main,.Lf6-main 58 .globl putd 59 .align 16 60 .type putd,@function 61 putd: 62 pushl %ebp 63 pushl %ebx 64 pushl %esi 65 pushl %edi 66 movl %esp,%ebp 67 cmpl $0,20(%ebp) 68 jge .LC8 69 pushl $45 70 call putchar 71 addl $4,%esp 72 negl 20(%ebp) 73 .LC8: 74 movl 20(%ebp),%eax 75 movl $10,%ecx 76 cdq 77 idivl %ecx 78 cmpl $0,%eax 79 je .LC10 80 movl 20(%ebp),%eax 81 movl $10,%ecx 82 cdq 83 idivl %ecx 84 pushl %eax 85 call putd 86 addl $4,%esp 87 .LC10: 88 movl 20(%ebp),%eax 89 movl $10,%ecx 90 cdq 91 idivl %ecx 92 leal 48(%edx),%edi 93 pushl %edi 94 call putchar 95 addl $4,%esp 96 movl $0,%eax 97 .LC7: 98 movl %ebp,%esp 99 popl %edi 100 popl %esi 101 popl %ebx 102 popl %ebp 103 ret 104 .Lf12: 105 .size putd,.Lf12-putd 106 .globl sort 107 .align 16 108 .type sort,@function 109 sort: 110 pushl %ebp 111 pushl %ebx 112 pushl %esi 113 pushl %edi 114 movl %esp,%ebp 115 movl 24(%ebp),%edi 116 subl $1,%edi 117 movl %edi,24(%ebp) 118 pushl %edi 119 pushl $0 120 movl 20(%ebp),%edi 121 movl %edi,xx 122 pushl %edi 123 call quick 124 addl $12,%esp 125 movl $0,%eax 126 .LC13: 127 movl %ebp,%esp 128 popl %edi 129 popl %esi 130 popl %ebx 131 popl %ebp 132 ret 133 .Lf14: 134 .size sort,.Lf14-sort 135 .globl quick 136 .align 16 137 .type quick,@function 138 quick: 139 pushl %ebp 140 pushl %ebx 141 pushl %esi 142 pushl %edi 143 movl %esp,%ebp 144 subl $4,%esp 145 movl 28(%ebp),%edi 146 cmpl %edi,24(%ebp) 147 jl .LC16 148 jmp .LC15 149 .LC16: 150 pushl 28(%ebp) 151 pushl 24(%ebp) 152 pushl 20(%ebp) 153 call partition 154 addl $12,%esp 155 movl %eax,-4(%ebp) 156 movl -4(%ebp),%edi 157 subl $1,%edi 158 pushl %edi 159 pushl 24(%ebp) 160 pushl 20(%ebp) 161 call quick 162 addl $12,%esp 163 pushl 28(%ebp) 164 movl -4(%ebp),%edi 165 leal 1(%edi),%edi 166 pushl %edi 167 pushl 20(%ebp) 168 call quick 169 addl $12,%esp 170 movl $0,%eax 171 .LC15: 172 movl %ebp,%esp 173 popl %edi 174 popl %esi 175 popl %ebx 176 popl %ebp 177 ret 178 .Lf18: 179 .size quick,.Lf18-quick 180 .globl partition 181 .align 16 182 .type partition,@function 183 partition: 184 pushl %ebp 185 pushl %ebx 186 pushl %esi 187 pushl %edi 188 movl %esp,%ebp 189 subl $8,%esp 190 incl 28(%ebp) 191 movl 24(%ebp),%edi 192 movl %edi,-8(%ebp) 193 movl -8(%ebp),%edi 194 movl 20(%ebp),%esi 195 movl (%esi,%edi,4),%edi 196 movl %edi,-4(%ebp) 197 jmp .LC21 198 .LC20: 199 incl 24(%ebp) 200 jmp .LC24 201 .LC23: 202 incl 24(%ebp) 203 .LC24: 204 movl 24(%ebp),%edi 205 movl 20(%ebp),%esi 206 movl -4(%ebp),%ebx 207 cmpl %ebx,(%esi,%edi,4) 208 jl .LC23 209 decl 28(%ebp) 210 jmp .LC27 211 .LC26: 212 decl 28(%ebp) 213 .LC27: 214 movl 28(%ebp),%edi 215 movl 20(%ebp),%esi 216 movl -4(%ebp),%ebx 217 cmpl %ebx,(%esi,%edi,4) 218 jg .LC26 219 movl 28(%ebp),%edi 220 cmpl %edi,24(%ebp) 221 jge .LC29 222 movl 20(%ebp),%edi 223 movl 28(%ebp),%esi 224 leal (%edi,%esi,4),%esi 225 pushl %esi 226 movl 24(%ebp),%esi 227 leal (%edi,%esi,4),%edi 228 pushl %edi 229 call exchange 230 addl $8,%esp 231 .LC29: 232 .LC21: 233 movl 28(%ebp),%edi 234 cmpl %edi,24(%ebp) 235 jl .LC20 236 movl 20(%ebp),%edi 237 movl 28(%ebp),%esi 238 leal (%edi,%esi,4),%esi 239 pushl %esi 240 movl -8(%ebp),%esi 241 leal (%edi,%esi,4),%edi 242 pushl %edi 243 call exchange 244 addl $8,%esp 245 movl 28(%ebp),%eax 246 .LC19: 247 movl %ebp,%esp 248 popl %edi 249 popl %esi 250 popl %ebx 251 popl %ebp 252 ret 253 .Lf31: 254 .size partition,.Lf31-partition 255 .globl exchange 256 .align 16 257 .type exchange,@function 258 exchange: 259 pushl %ebp 260 pushl %ebx 261 pushl %esi 262 pushl %edi 263 movl %esp,%ebp 264 subl $4,%esp 265 movl xx,%edi 266 movl $4,%esi 267 movl 24(%ebp),%ebx 268 subl %edi,%ebx 269 movl %ebx,%eax 270 movl %esi,%ecx 271 cdq 272 idivl %ecx 273 pushl %eax 274 movl 20(%ebp),%ebx 275 subl %edi,%ebx 276 movl %ebx,%eax 277 movl %esi,%ecx 278 cdq 279 idivl %ecx 280 pushl %eax 281 pushl $.LC33 282 call printf 283 addl $12,%esp 284 movl 20(%ebp),%edi 285 movl (,%edi),%esi 286 movl %esi,-4(%ebp) 287 movl 24(%ebp),%esi 288 movl (,%esi),%esi 289 movl %esi,(,%edi) 290 movl 24(%ebp),%edi 291 movl -4(%ebp),%esi 292 movl %esi,(,%edi) 293 movl $0,%eax 294 .LC32: 295 movl %ebp,%esp 296 popl %edi 297 popl %esi 298 popl %ebx 299 popl %ebp 300 ret 301 .Lf34: 302 .size exchange,.Lf34-exchange 303 .bss 304 .globl xx 305 .align 4 306 .type xx,@object 307 .size xx,4 308 .comm xx,4 309 .data 310 .align 1 311 .LC33: 312 .byte 101 313 .byte 120 314 .byte 99 315 .byte 104 316 .byte 97 317 .byte 110 318 .byte 103 319 .byte 101 320 .byte 40 321 .byte 37 322 .byte 100 323 .byte 44 324 .byte 37 325 .byte 100 326 .byte 41 327 .byte 10 328 .byte 0 329 .text 330 .ident "LCC: 4.1"