diff --git a/laborator/content/etapele-compilarii/00-vars-obs/program_executabil b/laborator/content/etapele-compilarii/00-vars-obs/program_executabil new file mode 100755 index 00000000..5ca9af5b Binary files /dev/null and b/laborator/content/etapele-compilarii/00-vars-obs/program_executabil differ diff --git a/laborator/content/etapele-compilarii/01-one-diy/a-dynamic/Makefile b/laborator/content/etapele-compilarii/01-one-diy/a-dynamic/Makefile new file mode 100644 index 00000000..2b196f0a --- /dev/null +++ b/laborator/content/etapele-compilarii/01-one-diy/a-dynamic/Makefile @@ -0,0 +1,18 @@ +CFLAGS = -fno-PIC -m32 -g +LDFLAGS = -no-pie -m32 + +.DEFAULT_GOAL: all + +.PHONY: all clean + +all: name + +name: name.o + $(CC) $(LDFLAGS) -o $@ $^ + #ld -dynamic-linker /lib/ld-linux.so.2 -m elf_i386 -o $@ /usr/lib32/crt1.o /usr/lib32/crti.o $^ -lc /usr/lib32/crtn.o + +name.o: name.c + +clean: + -rm -f name name.o + -rm -f *~ diff --git a/laborator/content/etapele-compilarii/01-one-diy/b-static/Makefile b/laborator/content/etapele-compilarii/01-one-diy/b-static/Makefile new file mode 100644 index 00000000..e1e86265 --- /dev/null +++ b/laborator/content/etapele-compilarii/01-one-diy/b-static/Makefile @@ -0,0 +1,18 @@ +CFLAGS = -fno-PIC -m32 -g +LDFLAGS = -static -no-pie -m32 + +.DEFAULT_GOAL: all + +.PHONY: all clean + +all: name + +name: name.o + $(CC) $(LDFLAGS) -o $@ $^ + #ld -static -m elf_i386 -L/usr/lib/gcc/x86_64-linux-gnu/7/32/ -o $@ /usr/lib32/crt1.o /usr/lib32/crti.o $^ --start-group -lc -lgcc -lgcc_eh --end-group /usr/lib32/crtn.o + +name.o: name.c + +clean: + -rm -f name name.o + -rm -f *~ diff --git a/laborator/content/etapele-compilarii/03-entry-fix/a-no-main1/hello.c b/laborator/content/etapele-compilarii/03-entry-fix/a-no-main1/hello.c deleted file mode 100644 index 6fa73fa5..00000000 --- a/laborator/content/etapele-compilarii/03-entry-fix/a-no-main1/hello.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -static void hi(void) -{ - puts("Hi!"); -} - -static void bye(void) -{ - puts("Bye!"); -} - -int my_main(void) -{ - hi(); - bye(); - - return 0; -} diff --git a/laborator/content/etapele-compilarii/04-var-func-fix/state.c b/laborator/content/etapele-compilarii/04-var-func-fix/state.c index 508c5bca..183b5fc2 100644 --- a/laborator/content/etapele-compilarii/04-var-func-fix/state.c +++ b/laborator/content/etapele-compilarii/04-var-func-fix/state.c @@ -1,6 +1,6 @@ const char *init_shopping[3]; -void shopping_list(void) +void init_shopping(void) { init_shopping[0] = "cheese"; init_shopping[1] = "wine"; diff --git a/laborator/content/etapele-compilarii/04-var-func-fix/state.h b/laborator/content/etapele-compilarii/04-var-func-fix/state.h index c0ce67d9..5f28368f 100644 --- a/laborator/content/etapele-compilarii/04-var-func-fix/state.h +++ b/laborator/content/etapele-compilarii/04-var-func-fix/state.h @@ -2,6 +2,6 @@ #define STATE_H_ 1 void init_shopping(void); -extern const char *shopping_list[3]; +const char *shopping_list[3]; #endif diff --git a/laborator/content/operatii-memorie-gdb/1-iterate/iterate.c b/laborator/content/operatii-memorie-gdb/1-iterate/iterate.c index 4181b280..8355fe0f 100644 --- a/laborator/content/operatii-memorie-gdb/1-iterate/iterate.c +++ b/laborator/content/operatii-memorie-gdb/1-iterate/iterate.c @@ -1,19 +1,24 @@ -// SPDX-License-Identifier: BSD-3-Clause - #include - -/* - * Afisati adresele elementelor din vectorul "v" impreuna cu valorile - * de la acestea. - * Parcurgeti adresele, pe rand, din octet in octet, - * din 2 in 2 octeti si apoi din 4 in 4. - */ - int main(void) { int v[] = {0xCAFEBABE, 0xDEADBEEF, 0x0B00B135, 0xBAADF00D, 0xDEADC0DE}; - - (void) v; - - return 0; + printf("Parcurgere octet cu octet:\n"); + unsigned char *char_ptr = (unsigned char *)v; + for (int i = 0; i < sizeof(v); i++) { + printf("%p -> 0x%x\n", char_ptr, *char_ptr); + char_ptr++; + } + printf("\nParcurgere doi octeți la un pas:\n"); + char_ptr = (unsigned char *)v; + for (int i = 0; i < sizeof(v); i += 2) { + printf("%p -> 0x%x%x\n", char_ptr, *char_ptr, *(char_ptr + 1)); + char_ptr += 2; + } + printf("\nParcurgere patru octeți la un pas:\n"); + char_ptr = (unsigned char *)v; + for (int i = 0; i < sizeof(v); i += 4) { + printf("%p -> 0x%x%x%x%x\n", char_ptr, *char_ptr, *(char_ptr + 1), *(char_ptr + 2), *(char_ptr + 3)); + char_ptr += 4; + } + return 0; } diff --git a/laborator/content/operatii-memorie-gdb/1-iterate/pb1 b/laborator/content/operatii-memorie-gdb/1-iterate/pb1 new file mode 100755 index 00000000..1ce256c3 Binary files /dev/null and b/laborator/content/operatii-memorie-gdb/1-iterate/pb1 differ diff --git a/laborator/content/operatii-memorie-gdb/2-delete-first/delete-first.c b/laborator/content/operatii-memorie-gdb/2-delete-first/delete-first.c index 2741b2d4..93620b97 100644 --- a/laborator/content/operatii-memorie-gdb/2-delete-first/delete-first.c +++ b/laborator/content/operatii-memorie-gdb/2-delete-first/delete-first.c @@ -4,7 +4,26 @@ #include #include -char *delete_first(char *s, char *pattern); +char *delete_first(char *s, char *pattern){ + int i = 0, cnt = 0, ans = 0, gasit = 0; + char *rez= malloc(strlen(s)); + for(i = 0; i < strlen(s); i++){ + int ci = i; + cnt = 0; + while(gasit == 0 && ci < strlen(s) && s[ci] == pattern[cnt]){ + cnt++; + ci++; + if(cnt == strlen(pattern)){ + gasit = 1; + i = ci; + break; + } + } + rez[ans] = s[i]; + ans++; + } + return rez; +} int main(void) { @@ -14,12 +33,7 @@ int main(void) */ char *s = "Ana are mere"; char *pattern = "re"; - - (void) s; - (void) pattern; - - // Decomentați linia după ce ați implementat funcția delete_first. - // printf("%s\n", delete_first(s, pattern)); + printf("%s\n", delete_first(s, pattern)); return 0; } diff --git a/laborator/content/operatii-memorie-gdb/2-delete-first/pb2 b/laborator/content/operatii-memorie-gdb/2-delete-first/pb2 new file mode 100755 index 00000000..dc3aa733 Binary files /dev/null and b/laborator/content/operatii-memorie-gdb/2-delete-first/pb2 differ