diff --git a/README.md b/README.md index ac4e0e68240b46711575d11df560fab630caa2dd..f2d42c6ce3c9c892812189aa13d6fc1a878bd54f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DupÄ ce Či-a fÄcut atâČia prieteni ĂŽn cadrul temei 2, suricata Zoly a efectuat un audit de securitate al reČelelor clanurilor cÄrora s-a alÄturat Či Či-a dat seama cÄ nu existÄ nicio mÄsurÄ adecvatÄ de securitate. Astfel, ea doreČte sÄ ĂŽČi creeze propriul sistem de detecČie si prevenire a intruziunilor in reČea, si vÄ roagÄ sÄ o ajutaČi cu implementarea unor componente ale acestuia. -## Task 1 - Parantezinatorul +## Task 1 - Parantezinator Sistemul se bazeazÄ pe anumite reguli care trebuie scrise ĂŽntr-un fiČier de configurare. Un aspect important al verificÄrii acestor reguli este parantezarea diferitelor elemente ale regulii. @@ -130,7 +130,7 @@ Printarea se va realiza prin apelara funcČiei `printf`. | Folosire macro PRINTF32 | -10p | | SoluČie nerecursivÄ | -20p | -## Bonus +## Bonus - x64 assembly Acum ca Zoly Či-a scris sistemul de detecČie a intruziunilor Či ĂŽČi poate apÄra toČi prietenii pe care Či i-a facut ĂŽn tema 2, se poate ĂŽntoarce la marea ei pasiune: programarea funcČionalÄ. diff --git a/src/bonus/README.md b/src/bonus/README.md index dbd6f6769e2089bbc48e21a2a16a5d48673d1a3c..34c86bd22f80006f0c4769b29a22205d2fa6595b 100644 --- a/src/bonus/README.md +++ b/src/bonus/README.md @@ -1,51 +1,51 @@ -# Bonus - x64 assembly +## Bonus - x64 assmebly -Acum ca Zoly si-a scris sistemul de detectie a intruziunilor -si isi poate apara toti prietenii pe care si i-a facut in tema 2, -se poate intoarce la marea ei pasiune: programarea functionala. +Acum ca Zoly Či-a scris sistemul de detecČie a intruziunilor Či ĂŽČi poate apÄra toČi prietenii pe care Či i-a facut ĂŽn tema 2, se poate ĂŽntoarce la marea ei pasiune: programarea funcČionalÄ. -Totodata, spre deosebire de echipa de PCLP2, ea a inteles ca in -prezent se folosesc sisteme pe 64 de biti, iar cele pe 32 de biti -sunt foarte rare. Astfel, ea doreste sa implementeze functiile -`map` si `reduce` in assembly pe 64 de biti si folosin si numere -pe 64 de biti. Stiti de la -(tema 1)[https://gitlab.cs.pub.ro/iocla/tema-1-2024] ce sunt fiecare. +TotodatÄ, spre deosebire de echipa de PCLP2, ea a ĂŽnČeles cÄ ĂŽn prezent se folosesc sisteme pe 64 de biČi, iar cele pe 32 de biČi sunt foarte rare. Astfel, ea doreČte sÄ implementeze funcČiile `map` Či `reduce` ĂŽn assembly pe 64 de biČi si folosim Či numere pe 64 de biČi. StiČi de la [tema 1](https://gitlab.cs.pub.ro/iocla/tema-1-2024) ce sunt fiecare. ## Map Antet map: -``` + +```c void map(int64_t *destination_array, int64_t *source_array, int64_t array_size, int64_t(*f)(int64_t)); ``` Antet functie ce poate fi folosita pentru map: -``` + +```c int64_t map_func1(int64_t curr_elem); ``` Pseudocod map: -``` + +```text map(dst, src, n, to_apply): - for i de la 0 la n: - dst[i] = to_apply(src[i]) + for i de la 0 la n: + dst[i] = to_apply(src[i]) ``` ## Reduce Antet reduce: -``` -int64_t fold(int64_t *destination_array, int64_t *source_array, int64_t array_size, int64_t accumulator_initial_value, int64_t(*f)(int64_t, int64_t)); + +```c +int64_t reduce(int64_t *destination_array, int64_t *source_array, int64_t array_size, int64_t accumulator_initial_value, int64_t(*f)(int64_t, int64_t)); ``` Antet functie ce poate fi folosita pentru reduce: -``` + +```c int64_t reduce_func1(int64_t accumulator, int64_t current_elem); ``` Pseudocod reduce: -``` + +```text reduce(src, n, accumulator_initial, to_apply): - acc = accumulator_initial - for i de la 0 la n: - acc = to_apply(acc, src[i]) + acc = accumulator_initial + for i de la 0 la n: + acc = to_apply(acc, src[i]) + return acc ``` diff --git a/src/task-1/README.md b/src/task-1/README.md index 57ab50ba882c0823baa14eaa71d7b68b3bdec22b..8607bf22633355478bcde211d1db9410d7618879 100644 --- a/src/task-1/README.md +++ b/src/task-1/README.md @@ -1,18 +1,10 @@ -# Task 1 - Paranthesinator +## Task 1 - Parantezinator -Sistemul se bazeazÄ pe anumite reguli care trebuie scrise intr-un -fiČier de configurare. -Un aspect important al verificÄrii acestor reguli este parantezarea -diferitelor elemente ale regulii. +Sistemul se bazeazÄ pe anumite reguli care trebuie scrise ĂŽntr-un fiČier de configurare. +Un aspect important al verificÄrii acestor reguli este parantezarea diferitelor elemente ale regulii. -Ăn acest task va trebui sÄ implementaČi o funcČie care verificÄ -dacÄ un Čir de paranteze formeazÄ o parantezare corectÄ, adicÄ -dacÄ toate parantezele deschise sunt inchise corespunzÄtor. +Ăn acest task va trebui sÄ implementaČi o funcČie care verificÄ dacÄ un Čir de paranteze formeazÄ o parantezare corectÄ, adicÄ dacÄ toate parantezele deschise sunt ĂŽnchise corespunzÄtor. -De exemplu, Čirul "()()" este o parantezare corectÄ, dar -"{{}" nu este, pentru ca se ĂŽnchide doar o parantezÄ, -Či nici "{[}]" nu este, pentru cÄ parantezele nu sunt -ĂŽnchise corespunzÄtor. +De exemplu, Čirul "()()" este o parantezare corectÄ, dar "{{}" nu este, pentru ca se ĂŽnchide doar o parantezÄ, Či nici "{[}]" nu este, pentru cÄ parantezele nu sunt ĂŽnchise corespunzÄtor. -FuncČia pe care o veČi implementa va returna 0 daca nu sunt probleme -de parantezare (dacÄ sunt parantezele puse bine) si 1 altfel. +FuncČia pe care o veČi implementa va returna 0 daca nu sunt probleme de parantezare (dacÄ sunt parantezele puse bine) si 1 altfel. diff --git a/src/task-2/README.md b/src/task-2/README.md index bfbadf6590a665cd68fb50323f977146884315a8..836c488e617435091b302086664b4443fdc679ff 100644 --- a/src/task-2/README.md +++ b/src/task-2/README.md @@ -1,13 +1,10 @@ -# Task 2 - Divide et impera +## Task 2 - Divide et impera -Ăn acest task veČi implementa doi algoritmi bine cunoscuČi (sperÄm noi): -*quick sort* Či *binary search*. +Ăn acest task veČi implementa doi algoritmi bine cunoscuČi (sperÄm noi): *quick sort* Či *binary search*. *Note:* ambele implementÄri trebuie sÄ fie recursive, NU iterative. -Pentru a rula toate testele, rulaČi executabilul generat farÄ niciun -argument. Pentru a rula un singur test, pasati unul dintre keyword-urile -`qsort` Či `bsearch` ca prim argument, urmat de numÄrul testului. +Pentru a rula toate testele, rulaČi executabilul generat farÄ niciun argument. Pentru a rula un singur test, pasati unul dintre keyword-urile `qsort` Či `bsearch` ca prim argument, urmat de numÄrul testului. De exemplu: ```bash @@ -21,14 +18,11 @@ $ ./checker bsearch 10 --- -## ExerciČiul 1 +### ExerciČiul 1 -Pentru acest exerciČiu aveČi de implementat funcČia `quick_sort()` ĂŽn fiČierul -`subtask_1.asm`. +Pentru acest exerciČiu aveČi de implementat funcČia `quick_sort()` ĂŽn fiČierul `subtask_1.asm`. -AceastÄ funcČie are semnÄtura de mai jos. Ăn urma rulÄrii ei, numerele stocate -ĂŽn `buff` vor fi sortate crescÄtor. `start` Či `end` reprezintÄ indexul -primului, respectiv ultimului element (ĂŽncepând de la 0). +AceastÄ funcČie are semnÄtura de mai jos. Ăn urma rulÄrii ei, numerele stocate ĂŽn `buff` vor fi sortate crescÄtor. `start` Či `end` reprezintÄ indexul primului, respectiv ultimului element (ĂŽncepând de la 0). ```c void quick_sort(int32_t *buff, uint32_t start, uint32_t end); @@ -36,23 +30,16 @@ void quick_sort(int32_t *buff, uint32_t start, uint32_t end); --- -## ExerciČiul 2 +### ExerciČiul 2 -Ăn acest exerciČiu va trebui sa implementaČi funcČia `binary_search()` ĂŽn -fiČierul `subtask_2.asm`. +Ăn acest exerciČiu va trebui sa implementaČi funcČia `binary_search()` ĂŽn fiČierul `subtask_2.asm`. -AceastÄ funcČie va returna poziČia elementului `needle` in cadrul array-ului -`buff`. CÄutarea va avea loc ĂŽntre elementele indexate `start` Či `end` -(inclusiv). DacÄ `needle` nu se gÄseČte ĂŽn `buff`, funcČia va returna `-1`. -Este garantat faptul cÄ elementele din `buff` sunt sortate crescÄtor. +AceastÄ funcČie va returna poziČia elementului `needle` in cadrul array-ului `buff`. CÄutarea va avea loc ĂŽntre elementele indexate `start` Či `end` (inclusiv). DacÄ `needle` nu se gÄseČte ĂŽn `buff`, funcČia va returna `-1`. Este garantat faptul cÄ elementele din `buff` sunt sortate crescÄtor. -ObservaČi ĂŽn cadrul semnÄturii funcČiei atributul -[fastcall](https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Function-Attributes.html). -Acesta va modifica calling convention-ul utilizat in `check.c`. ČineČi cont de -acest lucru când implementaČi funcČia (Či când faceČi apelurile recursive). +ObservaČi ĂŽn cadrul semnÄturii funcČiei atributul [fastcall](https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Function-Attributes.html). +Acesta va modifica calling convention-ul utilizat in `check.c`. ČineČi cont de acest lucru când implementaČi funcČia (Či când faceČi apelurile recursive). ```c int32_t __attribute__((fastcall)) binary_search(int32_t *buff, uint32_t needle, uint32_t start, uint32_t end); ``` -