Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 1. Funkcja zwracajaca indeks poczatku wystapienia ciagu znakow '*' o dl. len1 w lancuchu znakow str o dlugosci len2 lub -1 jesli ciag nie wystapil
- int f(char *str, int len1, int len2) --1,5 p
- 2. Funkcja rekurencyjna
- - argumenty i wynik przekazywane przez rejestry --2 p
- - -||- stos -- 1,5 p
- KARTKOWKA NA NASTEPNYCH ZAJECIACH */
- .data
- STDOUT = 1
- SYSWRTIE = 1
- STDIN = 0
- SYSREAD = 0
- SYSEXIT = 60
- EXIT_SUCCESS = 0
- BUFLEN = 512
- DLUGOSC_GWIAZDEK = 5
- .bss
- .comm buf, 512
- .text
- .globl _start
- _start:
- nop
- movq $SYSREAD, %rax /* DLUGOSC CIAGU */
- movq $STDIN, %rdi
- movq $buf, %rsi
- movq $BUFLEN, %rdx
- syscall
- mov $buf, %r8
- mov $DLUGOSC_GWIAZDEK, %r9
- mov %rax, %r10
- push %r10 /* dlugosc ciagu */
- push %r9 /* dlugosc ciagu gwiazdek */
- push %r8 /* adres poczatku ciagu */
- call gwiazdki
- check:
- koniec:
- mov $SYSEXIT, %rax
- mov $EXIT_SUCCESS, %rdi
- syscall
- gwiazdki: /* Funkcja szukajaca gwiazdek */
- check2:
- push %rbp
- mov %rsp, %rbp
- movq $0, %r12 /* licznik */
- movq $0, %r13 /*ilosc gwiazdek */
- mov 16(%rbp), %r8 /* adres poczatku ciagu */
- mov 24(%rbp), %r9 /* dlugosc ciagu gwiazdek */
- mov 32(%rbp), %r10 /* dlugosc ciagu */
- dec %r10
- szukaj:
- movb (%r8, %r12, 1), %dl
- cmp $42, %dl
- je zwieksz_licznik
- movq $0, %r13
- inc %r12
- cmp %r10, %r12
- jl szukaj
- cmp %r10, %r12
- jge niema
- zwieksz_licznik:
- inc %r13
- inc %r12
- cmp %r10, %r12
- jl szukaj
- cmp %r10, %r12
- jge znaleziono
- znaleziono:
- cmp %r9, %r13
- jae end
- cmp %r9, %r13
- jb niema
- niema:
- movq $-1, %r12
- jmp end2
- end:
- sub %r13, %r12
- inc %r12
- end2:
- mov %rbp, %rsp
- pop %rbp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement