Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .section .text
- .global extremos #int pontuacao(int *vetor,int num)
- extremos:
- # prologue
- pushl %ebp # save previous stack frame pointer
- movl %esp, %ebp # the stack frame pointer for sum function
- pushl %ebx #guarda %ebx na stack
- pushl %edi #guarda %edi na stack
- pushl %esi
- movl $0,%eax
- movl $0,%ebx
- movl $0x7FFFFFFF,%ecx
- movl $0,%edx
- movl 8(%ebp),%edi #vetor
- movl 12(%ebp),%esi #numeroElementos
- subl $8,%esp
- movl $0, -8(%ebp)
- movl (%edi),%ebx #ebx tem o 1 elemento do vetor
- loop:
- cmpl $0,%esi
- je end
- cmpl $32,-8(%ebp)
- je avanca #se percorrer 32 bits avanca para o proximo num
- movl %ebx,-4(%ebp) #-4(%ebp) serve como auxiliar
- andl $0xFFFF,-4(%ebp) #poe os 16 bits mais significativos a 0
- cmpl %edx,-4(%ebp)
- jg maior
- cmpl %ecx, -4(%ebp)
- jl menor
- shrl $16,%ebx
- addl $16,-8(%ebp) #verifica se o numero ja acabou
- jmp loop
- maior:
- movl -4(%ebp),%edx
- shrl $16,%ebx
- addl $16,-8(%ebp) #verifica se o numero ja acabou
- jmp loop
- menor:
- movl $0, %ecx
- movl -4(%ebp),%ecx
- shrl $16,%ebx
- addl $16,-8(%ebp) #verifica se o numero ja acabou
- jmp loop
- avanca:
- movl $0, -8(%ebp)
- addl $4,%edi
- movl (%edi),%ebx
- decl %esi
- jmp loop
- end:
- orl %edx, %eax
- shll $16, %eax
- orl %ecx, %eax
- popl %esi
- popl %edi
- popl %ebx
- # epilogue
- movl %ebp, %esp # restore the previous stack pointer ("clear" the stack)
- popl %ebp # restore the previous stack frame pointer
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement