Untitled
unknown
plain_text
5 months ago
1.6 kB
3
Indexable
Intercambiar: pushl %ebp movl %esp, %ebp subl $12, %esp pushl %ebx pushl %edi pushl %esi movl 8(%ebp), %ecx #@v[0] movl 12(%ebp), %edi # i movl 16(%ebp), %esi #j imul $12, %edi # 12i imul $12, %esi # 12j addl %ecx, %edi # v[i] addl %ecx, %esi # v[j] movb (%edi), %dl # v[i].c movb %dl, -4(%ebp) #s = v[i.c] movb (%esi), %bl #v[j].c movb %bl, (%edi) #v[i].c = v[j].c movb %dl, (%esi) #v[j].c = s movl 4(%edi), %edx #v[i].k movl %edx, -12(%ebp) #tmp = v[i].k movl 4(%esi), %ebx #v[j].k movl %ebx, 4(%edi) #v[i].k = v[j].k movl %edx, 4(%esi) #v[j].c = tmp movl 8(%edi), %edx #v[i].m movl %edx, -8(%ebp) #tmp = v[i].k movl 8(%esi), %ebx #v[j].k movl %ebx, 8(%edi) #v[i].k = v[j].k movl %edx, 8(%esi) #v[j].c = tmp popl %esi popl %edi popl %ebx movl %ebp, %esp popl %ebp ret ////////////////////////////// Ordena: pushl %ebp movl %esp, %ebp subl $8, %esp pushl %ebx pushl %edi pushl %esi movl 8(%ebp), %ebx #@v[0] movl $0, %edi #i for_i: imul $12, %edi, %ecx # 12i addl %ebx, %ecx # v[i] cmpl $0x80000000, 4(%ecx) je end_for_i movl %edi, %esi # j= i incl %esi # j = i+1 for_j: imul $12, %esi, %edx # 12j addl %ebx, %edx # v[j] cmpl $0x80000000, 4(%edx) je end_for_j if: movl 4(%ecx), %eax cmpl 4(%edx), %eax #v[i].k > v[j].k jle end_if pushl %ecx #guardar ecx pushl %esi pushl %edi pushl %ebx call Intercambiar addl $12, %esp popl %ecx #recuperamos %ecx end_if: incl %esi # ++j jmp for_j end_for_j: incl %edi # ++i jmp for_i end_for_i: movl %edi, %eax # return i popl %esi popl %edi popl %ebx movl %ebp, %esp popl %ebp ret
Editor is loading...
Leave a Comment