Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .globl selection_sort
- selection_sort:
- pushl %ebx
- pushl %esi
- pushl %edi
- subl $8,%esp
- movl 24(%esp),%ebx #short *ebx=v;
- xorl %edi,%edi #int edi=0;//i
- movl $1,%esi #int esi=1;//j
- #int eax;//min
- movl 28(%esp),%ecx
- decl %ecx
- OUTERFOR:
- cmpl %edi,%ecx #if(edi>=n-1)
- jle E # goto E;
- movl %edi,%eax #eax=edi;
- movl %edi,%esi #esi=edi;
- incl %esi #edi++;
- INNERFOR:
- incl %ecx
- cmpl %esi,%ecx #if(esi>=n)
- jle SWP # goto SWP;
- decl %ecx
- movw (%ebx,%eax,2),%dx
- cmpw (%ebx,%esi,2),%dx #if(*(ebx+esi)<*(ebx+eax))
- cmovgl %esi,%eax # eax=esi;//min=j
- incl %esi #esi++;
- jmp INNERFOR #goto INNERFOR;
- SWP:
- decl %ecx
- leal (%ebx,%edi,2),%edx
- movl %edx,(%esp)
- leal (%ebx,%eax,2),%edx
- movl %edx,4(%esp)
- call swap #swap(ebx+edi,ebx+eax);
- incl %edi #edi++;
- jmp OUTERFOR #goto OUTERFOR;
- E:
- addl $8,%esp
- popl %edi
- popl %esi
- popl %ebx
- ret #return;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement