Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* 1. Funkcja zwracajaca indeks poczatku wystapienia ciagu znakow '*' o dl. len1 w lancuchu znakow str o dlugosci len2 lub -1 jesli ciag nie wystapil
  2.  
  3. int f(char *str, int len1, int len2) --1,5 p
  4.  
  5. 2. Funkcja rekurencyjna
  6. - argumenty i wynik przekazywane przez rejestry --2 p
  7. - -||- stos -- 1,5 p
  8.  
  9. KARTKOWKA NA NASTEPNYCH ZAJECIACH */
  10.  
  11. .data
  12. STDOUT = 1
  13. SYSWRTIE = 1
  14. STDIN = 0
  15. SYSREAD = 0
  16. SYSEXIT = 60
  17. EXIT_SUCCESS = 0
  18. BUFLEN = 512
  19.  
  20. DLUGOSC_GWIAZDEK = 5
  21.  
  22. .bss
  23. .comm buf, 512
  24.  
  25. .text
  26. .globl _start
  27.  
  28. _start:
  29. nop
  30.  
  31. movq $SYSREAD, %rax /* DLUGOSC CIAGU */
  32. movq $STDIN, %rdi
  33. movq $buf, %rsi
  34. movq $BUFLEN, %rdx
  35. syscall
  36.  
  37.  
  38. mov $buf, %r8
  39. mov $DLUGOSC_GWIAZDEK, %r9
  40. mov %rax, %r10
  41.  
  42. push %r10 /* dlugosc ciagu */
  43. push %r9 /* dlugosc ciagu gwiazdek */
  44. push %r8 /* adres poczatku ciagu */
  45.  
  46. call gwiazdki
  47. check:
  48.  
  49. koniec:
  50. mov $SYSEXIT, %rax
  51. mov $EXIT_SUCCESS, %rdi
  52. syscall
  53.  
  54. gwiazdki: /* Funkcja szukajaca gwiazdek */
  55.  
  56. check2:
  57. push %rbp
  58. mov %rsp, %rbp
  59.  
  60. movq $0, %r12 /* licznik */
  61. movq $0, %r13 /*ilosc gwiazdek */
  62. mov 16(%rbp), %r8 /* adres poczatku ciagu */
  63. mov 24(%rbp), %r9 /* dlugosc ciagu gwiazdek */
  64. mov 32(%rbp), %r10 /* dlugosc ciagu */
  65.  
  66. dec %r10
  67. szukaj:
  68. movb (%r8, %r12, 1), %dl
  69. cmp $42, %dl
  70. je zwieksz_licznik
  71.  
  72. movq $0, %r13
  73. inc %r12
  74. cmp %r10, %r12
  75. jl szukaj
  76. cmp %r10, %r12
  77. jge niema
  78.  
  79. zwieksz_licznik:
  80. inc %r13
  81. inc %r12
  82. cmp %r10, %r12
  83. jl szukaj
  84. cmp %r10, %r12
  85. jge znaleziono
  86.  
  87. znaleziono:
  88. cmp %r9, %r13
  89. jae end
  90.  
  91. cmp %r9, %r13
  92. jb niema
  93.  
  94. niema:
  95. movq $-1, %r12
  96. jmp end2
  97.  
  98. end:
  99. sub %r13, %r12
  100. inc %r12
  101. end2:
  102. mov %rbp, %rsp
  103. pop %rbp
  104. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement