quick_sort.s
contents ::
  loop.c
  loop.s
  main_swap.c
  quick_sort.s
  ss.s
  swap2.c
  swap2.s
  swap_ararym.c
  swap_array.c
  swap_array.s
  swap.c
  swap.s


.text
.globl aquicksort
aquicksort:
         pushl         %ebp
         movl         %esp, %ebp
         pushl         %ebx

if:         
         movl         16(%ebp), %eax
         cmpl         12(%ebp), %eax
         jle         greater
         
         movl         12(%ebp), %eax
         movl         %eax, -8(%ebp)
         
         movl         16(%ebp), %edx
         movl         %edx, -12(%ebp)

         addl         %eax, %edx
         movl         %edx, %eax
         
         sarl         $31, %eax
         shrl         $31, %eax
         leal         (%eax,%edx), %eax
         sarl         $1, %eax
         imull         $4, %eax, %edx
         movl         8(%ebp), %eax
         
         movl         (%eax,%edx), %eax
         movl         %eax, -16(%ebp)

compare:
         movl         -12(%ebp), %eax
         cmpl         -8(%ebp), %eax
         jl         qs

j:
         imull         $4,-8(%ebp), %edx
         movl         8(%ebp), %eax
         movl         (%eax,%edx), %eax
         cmpl         -16(%ebp), %eax
         jge         nothin
         leal         -8(%ebp), %eax
         incl         (%eax)
         jmp         j

nothin:
         nop

i:
         imull         $4,-12(%ebp), %edx
         movl         8(%ebp), %eax
         movl         (%eax,%edx), %eax
         cmpl         -16(%ebp), %eax
         jle         .L11
         leal         -12(%ebp), %eax
         decl         (%eax)
         jmp         i
         
.L11:
         movl         -8(%ebp), %eax
         cmpl         -12(%ebp), %eax
         jg         qs

.L13:
         imull         $4, %eax, %edx
         movl         8(%ebp), %eax
         movl         (%eax,%edx), %ecx
         movl         %ecx, -20(%ebp)
         imull         $4, -8(%ebp), %ebx
         imull         $4, -12(%ebp), %edx
         movl         (%eax,%edx), %ecx
         movl         %ecx, (%eax,%ebx)
         movl         -20(%ebp), %ebx
         movl         %ebx, (%eax,%edx)
         leal         -8(%ebp), %eax
         incl         (%eax)
         leal         -12(%ebp), %eax
         decl         (%eax)
         jmp         compare

qs:
         subl         $20, %esp
         pushl         -12(%ebp)
         pushl         12(%ebp)
         pushl         8(%ebp)
         call         aquicksort
         addl         $12, %esp
         subl         $4, %esp
         pushl         16(%ebp)
         pushl         -8(%ebp)
         pushl         8(%ebp)
         call         aquicksort
         addl         $16, %esp
greater:
         movl         -4(%ebp), %ebx
         leave
         ret

James Little