Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # int PrviPosljednji(int *, int);
- .section .text
- .globl PrviPosljednji
- PrviPosljednji:
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl 8(%ebp), %esi # adresa prvog clana niza
- movl 12(%ebp), %eax # n - broj clanova niza
- movl $0, %ebx # brojac pozitivnih
- movl $0, %edx # brojac negativnih
- movl $0, %edi
- while:
- cmpl %edi, %eax
- je whileKraj
- movl (%esi, %edi, 4), %ecx # u %ecx smjesta vrijednost i-tog clana niza
- cmpl $0, %ecx
- jl whileNegativan
- # u suprotnom je pozitivan
- incl %ebx
- jmp whileBrojac
- whileNegativan:
- incl %edx
- whileBrojac:
- incl %edi
- jmp while
- whileKraj:
- cmpl %edx, %ebx
- jge vratiPrvi
- # u suprotnom vrati posljednji
- movl %eax, %ebx # u %ebx smjesta broj clanova niza
- decl %ebx # smanjuje za 1 kako bi pristupio posljednjem clanu, kako bi dobio (n-1)
- movl (%esi, %ebx, 4), %eax
- jmp kraj
- vratiPrvi:
- movl (%esi), %eax
- kraj:
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- ############################## C kod ###############################
- #include <stdio.h>
- int PrviPosljednji(int *, int);
- int main() {
- int niz[] = {1, -1, -5, -3};
- int n = 4;
- printf("%d", PrviPosljednji(niz, n));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement