From a7e5a6d4b1499c75d50624ab12f40dc0080899f4 Mon Sep 17 00:00:00 2001 From: "Hazal2.Veziroglu@live.uwe.ac.uk" <hazal2.veziroglu@live.uwe.ac.uk> Date: Mon, 25 Nov 2024 16:50:42 +0000 Subject: [PATCH] Update 79 files - /worksheet_0/task2_array_pointer.c - /worksheet_0/task3_array_compare.c - /worksheet_0/task2_array_pointer - /worksheet_0/task4_file_sum - /worksheet_0/task4_file_sum.c - /worksheet_0/task1_pointer.c - /worksheet_0/task7_tic_tac_toe - /worksheet_0/task6_print_2d_array - /worksheet_0/task5_swap_function - /worksheet_0/task6_print_2d_array.c - /worksheet_0/task1_pointer - /worksheet_0/foo.txt - /worksheet_0/task5_swap_function.c - /worksheet_0/task3_array_compare - /worksheet_0/task7_tic_tac_toe.c - /worksheet_0/task3_array_compare.dSYM/Contents/Info.plist - /worksheet_0/task3_array_compare.dSYM/Contents/Resources/Relocations/x86_64/task3_array_compare.yml - /worksheet_0/task3_array_compare.dSYM/Contents/Resources/DWARF/task3_array_compare - /worksheet_0/task2_array_pointer.dSYM/Contents/Info.plist - /worksheet_0/task2_array_pointer.dSYM/Contents/Resources/Relocations/x86_64/task2_array_pointer.yml - /worksheet_0/task2_array_pointer.dSYM/Contents/Resources/DWARF/task2_array_pointer - /worksheet_0/task7_tic_tac_toe.dSYM/Contents/Info.plist - /worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/Relocations/x86_64/task7_tic_tac_toe.yml - /worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/DWARF/task7_tic_tac_toe - /worksheet_0/task5_swap_function.dSYM/Contents/Info.plist - /worksheet_0/task5_swap_function.dSYM/Contents/Resources/Relocations/x86_64/task5_swap_function.yml - /worksheet_0/task5_swap_function.dSYM/Contents/Resources/DWARF/task5_swap_function - /worksheet_0/task4_file_sum.dSYM/Contents/Info.plist - /worksheet_0/task4_file_sum.dSYM/Contents/Resources/Relocations/x86_64/task4_file_sum.yml - /worksheet_0/task4_file_sum.dSYM/Contents/Resources/DWARF/task4_file_sum - /worksheet_0/task6_print_2d_array.dSYM/Contents/Info.plist - /worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/Relocations/x86_64/task6_print_2d_array.yml - /worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/DWARF/task6_print_2d_array - /worksheet_0/task1_pointer.dSYM/Contents/Info.plist - /worksheet_0/task1_pointer.dSYM/Contents/Resources/Relocations/x86_64/task1_pointer.yml - /worksheet_0/task1_pointer.dSYM/Contents/Resources/DWARF/task1_pointer - /worksheet_1/makefile - /worksheet_1/README.md - /worksheet_1/src/task2.asm - /worksheet_1/src/task3.asm - /worksheet_1/src/task1.asm - /worksheet_1/src/task4.asm - /worksheet_1/src/task1.o - /worksheet_1/src/driver.o - /worksheet_1/src/asm_io.o - /worksheet_1/src/asm_io.inc - /worksheet_1/src/asm_io.asm - /worksheet_1/src/driver.c - /worksheet2_1/Makefile - /worksheet2_1/loader.asm - /worksheet2_1/README.md - /worksheet2_1/loader.o - /worksheet2_1/iso/boot/grub/menu.lst - /worksheet2_1/iso/boot/grub/stage2_eltorito - /worksheet2_1/source/link.ld - /worksheet2_2/interrupts.h - /worksheet2_2/interrupts.o - /worksheet2_2/pic.c - /worksheet2_2/hardware_interrupt_enabler.s - /worksheet2_2/keyboard.c - /worksheet2_2/types.h - /worksheet2_2/Makefile - /worksheet2_2/kmain.o - /worksheet2_2/frame_buffer.c - /worksheet2_2/loader.s - /worksheet2_2/interrupts.c - /worksheet2_2/pic.h - /worksheet2_2/pic.o - /worksheet2_2/io.o - /worksheet2_2/keyboard.h - /worksheet2_2/io.h - /worksheet2_2/keyboard.o - /worksheet2_2/io.s - /worksheet2_2/interrupt_asm.o - /worksheet2_2/interrupt_asm.s - /worksheet2_2/interrupt_handlers.o - /worksheet2_2/interrupt_handlers.s - /worksheet2_2/frame_buffer.h - /worksheet2_2/kmain.c --- worksheet2_1/Makefile | 38 ++++++ worksheet2_1/README.md | 3 + worksheet2_1/iso/boot/grub/menu.lst | 5 + worksheet2_1/iso/boot/grub/stage2_eltorito | 0 worksheet2_1/loader.asm | 17 +++ worksheet2_1/loader.o | Bin 0 -> 544 bytes worksheet2_1/source/link.ld | 22 ++++ worksheet2_2/Makefile | 24 ++++ worksheet2_2/frame_buffer.c | 12 ++ worksheet2_2/frame_buffer.h | 11 ++ worksheet2_2/hardware_interrupt_enabler.s | 0 worksheet2_2/interrupt_asm.o | Bin 0 -> 432 bytes worksheet2_2/interrupt_asm.s | 6 + worksheet2_2/interrupt_handlers.o | Bin 0 -> 576 bytes worksheet2_2/interrupt_handlers.s | 17 +++ worksheet2_2/interrupts.c | 115 ++++++++++++++++++ worksheet2_2/interrupts.h | 40 ++++++ worksheet2_2/interrupts.o | Bin 0 -> 2448 bytes worksheet2_2/io.h | 7 ++ worksheet2_2/io.o | Bin 0 -> 416 bytes worksheet2_2/io.s | 9 ++ worksheet2_2/keyboard.c | 43 +++++++ worksheet2_2/keyboard.h | 11 ++ worksheet2_2/keyboard.o | Bin 0 -> 944 bytes worksheet2_2/kmain.c | 13 ++ worksheet2_2/kmain.o | Bin 0 -> 360 bytes worksheet2_2/loader.s | 0 worksheet2_2/pic.c | 19 +++ worksheet2_2/pic.h | 14 +++ worksheet2_2/pic.o | Bin 0 -> 700 bytes worksheet2_2/types.h | 13 ++ worksheet_0/foo.txt | 5 + worksheet_0/task1_pointer | Bin 0 -> 33320 bytes worksheet_0/task1_pointer.c | 12 ++ .../task1_pointer.dSYM/Contents/Info.plist | 20 +++ .../Contents/Resources/DWARF/task1_pointer | Bin 0 -> 9119 bytes .../Relocations/x86_64/task1_pointer.yml | 7 ++ worksheet_0/task2_array_pointer | Bin 0 -> 33456 bytes worksheet_0/task2_array_pointer.c | 12 ++ .../Contents/Info.plist | 20 +++ .../Resources/DWARF/task2_array_pointer | Bin 0 -> 9239 bytes .../x86_64/task2_array_pointer.yml | 7 ++ worksheet_0/task3_array_compare | Bin 0 -> 33576 bytes worksheet_0/task3_array_compare.c | 20 +++ .../Contents/Info.plist | 20 +++ .../Resources/DWARF/task3_array_compare | Bin 0 -> 9503 bytes .../x86_64/task3_array_compare.yml | 8 ++ worksheet_0/task4_file_sum | Bin 0 -> 33488 bytes worksheet_0/task4_file_sum.c | 18 +++ .../task4_file_sum.dSYM/Contents/Info.plist | 20 +++ .../Contents/Resources/DWARF/task4_file_sum | Bin 0 -> 10544 bytes .../Relocations/x86_64/task4_file_sum.yml | 7 ++ worksheet_0/task5_swap_function | Bin 0 -> 33616 bytes worksheet_0/task5_swap_function.c | 22 ++++ .../Contents/Info.plist | 20 +++ .../Resources/DWARF/task5_swap_function | Bin 0 -> 10074 bytes .../x86_64/task5_swap_function.yml | 8 ++ worksheet_0/task6_print_2d_array | Bin 0 -> 33608 bytes worksheet_0/task6_print_2d_array.c | 20 +++ .../Contents/Info.plist | 20 +++ .../Resources/DWARF/task6_print_2d_array | Bin 0 -> 9481 bytes .../x86_64/task6_print_2d_array.yml | 8 ++ worksheet_0/task7_tic_tac_toe | Bin 0 -> 33720 bytes worksheet_0/task7_tic_tac_toe.c | 59 +++++++++ .../Contents/Info.plist | 20 +++ .../Resources/DWARF/task7_tic_tac_toe | Bin 0 -> 10100 bytes .../Relocations/x86_64/task7_tic_tac_toe.yml | 9 ++ worksheet_1/README.md | 9 ++ worksheet_1/makefile | 28 +++++ worksheet_1/src/asm_io.asm | 26 ++++ worksheet_1/src/asm_io.inc | 30 +++++ worksheet_1/src/asm_io.o | Bin 0 -> 304 bytes worksheet_1/src/driver.c | 7 ++ worksheet_1/src/driver.o | Bin 0 -> 572 bytes worksheet_1/src/task1.asm | 17 +++ worksheet_1/src/task1.o | Bin 0 -> 704 bytes worksheet_1/src/task2.asm | 53 ++++++++ worksheet_1/src/task3.asm | 23 ++++ worksheet_1/src/task4.asm | 66 ++++++++++ 79 files changed, 1060 insertions(+) create mode 100644 worksheet2_1/Makefile create mode 100644 worksheet2_1/README.md create mode 100644 worksheet2_1/iso/boot/grub/menu.lst create mode 100644 worksheet2_1/iso/boot/grub/stage2_eltorito create mode 100644 worksheet2_1/loader.asm create mode 100644 worksheet2_1/loader.o create mode 100644 worksheet2_1/source/link.ld create mode 100644 worksheet2_2/Makefile create mode 100644 worksheet2_2/frame_buffer.c create mode 100644 worksheet2_2/frame_buffer.h create mode 100644 worksheet2_2/hardware_interrupt_enabler.s create mode 100644 worksheet2_2/interrupt_asm.o create mode 100644 worksheet2_2/interrupt_asm.s create mode 100644 worksheet2_2/interrupt_handlers.o create mode 100644 worksheet2_2/interrupt_handlers.s create mode 100644 worksheet2_2/interrupts.c create mode 100644 worksheet2_2/interrupts.h create mode 100644 worksheet2_2/interrupts.o create mode 100644 worksheet2_2/io.h create mode 100644 worksheet2_2/io.o create mode 100644 worksheet2_2/io.s create mode 100644 worksheet2_2/keyboard.c create mode 100644 worksheet2_2/keyboard.h create mode 100644 worksheet2_2/keyboard.o create mode 100644 worksheet2_2/kmain.c create mode 100644 worksheet2_2/kmain.o create mode 100644 worksheet2_2/loader.s create mode 100644 worksheet2_2/pic.c create mode 100644 worksheet2_2/pic.h create mode 100644 worksheet2_2/pic.o create mode 100644 worksheet2_2/types.h create mode 100644 worksheet_0/foo.txt create mode 100644 worksheet_0/task1_pointer create mode 100644 worksheet_0/task1_pointer.c create mode 100644 worksheet_0/task1_pointer.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task1_pointer.dSYM/Contents/Resources/DWARF/task1_pointer create mode 100644 worksheet_0/task1_pointer.dSYM/Contents/Resources/Relocations/x86_64/task1_pointer.yml create mode 100644 worksheet_0/task2_array_pointer create mode 100644 worksheet_0/task2_array_pointer.c create mode 100644 worksheet_0/task2_array_pointer.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task2_array_pointer.dSYM/Contents/Resources/DWARF/task2_array_pointer create mode 100644 worksheet_0/task2_array_pointer.dSYM/Contents/Resources/Relocations/x86_64/task2_array_pointer.yml create mode 100644 worksheet_0/task3_array_compare create mode 100644 worksheet_0/task3_array_compare.c create mode 100644 worksheet_0/task3_array_compare.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task3_array_compare.dSYM/Contents/Resources/DWARF/task3_array_compare create mode 100644 worksheet_0/task3_array_compare.dSYM/Contents/Resources/Relocations/x86_64/task3_array_compare.yml create mode 100644 worksheet_0/task4_file_sum create mode 100644 worksheet_0/task4_file_sum.c create mode 100644 worksheet_0/task4_file_sum.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task4_file_sum.dSYM/Contents/Resources/DWARF/task4_file_sum create mode 100644 worksheet_0/task4_file_sum.dSYM/Contents/Resources/Relocations/x86_64/task4_file_sum.yml create mode 100644 worksheet_0/task5_swap_function create mode 100644 worksheet_0/task5_swap_function.c create mode 100644 worksheet_0/task5_swap_function.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task5_swap_function.dSYM/Contents/Resources/DWARF/task5_swap_function create mode 100644 worksheet_0/task5_swap_function.dSYM/Contents/Resources/Relocations/x86_64/task5_swap_function.yml create mode 100644 worksheet_0/task6_print_2d_array create mode 100644 worksheet_0/task6_print_2d_array.c create mode 100644 worksheet_0/task6_print_2d_array.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/DWARF/task6_print_2d_array create mode 100644 worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/Relocations/x86_64/task6_print_2d_array.yml create mode 100644 worksheet_0/task7_tic_tac_toe create mode 100644 worksheet_0/task7_tic_tac_toe.c create mode 100644 worksheet_0/task7_tic_tac_toe.dSYM/Contents/Info.plist create mode 100644 worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/DWARF/task7_tic_tac_toe create mode 100644 worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/Relocations/x86_64/task7_tic_tac_toe.yml create mode 100644 worksheet_1/README.md create mode 100644 worksheet_1/makefile create mode 100644 worksheet_1/src/asm_io.asm create mode 100644 worksheet_1/src/asm_io.inc create mode 100644 worksheet_1/src/asm_io.o create mode 100644 worksheet_1/src/driver.c create mode 100644 worksheet_1/src/driver.o create mode 100644 worksheet_1/src/task1.asm create mode 100644 worksheet_1/src/task1.o create mode 100644 worksheet_1/src/task2.asm create mode 100644 worksheet_1/src/task3.asm create mode 100644 worksheet_1/src/task4.asm diff --git a/worksheet2_1/Makefile b/worksheet2_1/Makefile new file mode 100644 index 0000000..a5650f1 --- /dev/null +++ b/worksheet2_1/Makefile @@ -0,0 +1,38 @@ +ASM=nasm +CC=gcc +QEMU=qemu-system-i386 +GENISO=mkisofs + +SRC_DIR=source +ISO_DIR=iso +BUILD_DIR=$(ISO_DIR)/boot + +KERNEL=kernel.elf +ISO=os.iso + +all: build run + +build: $(KERNEL) iso + +$(KERNEL): loader.o + $(CC) -nostdlib -o $(KERNEL) loader.o -Wl,-T,$(SRC_DIR)/link.ld + +loader.o: loader.asm + $(ASM) -f elf loader.asm + +iso: $(KERNEL) + mkdir -p $(BUILD_DIR)/grub + cp $(KERNEL) $(BUILD_DIR) + cp $(ISO_DIR)/boot/grub/menu.lst $(BUILD_DIR)/grub/ + cp $(ISO_DIR)/boot/grub/stage2_eltorito $(BUILD_DIR)/grub/ + $(GENISO) -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 \ + -A os -input-charset utf8 -quiet -boot-info-table -o $(ISO) $(ISO_DIR) + +run: build + $(QEMU) -nographic -boot d -cdrom $(ISO) -m 32 -d cpu -D logQ.txt + +clean: + rm -f *.o $(KERNEL) $(ISO) + rm -rf $(BUILD_DIR) + +.PHONY: all build iso run clean diff --git a/worksheet2_1/README.md b/worksheet2_1/README.md new file mode 100644 index 0000000..42b2e70 --- /dev/null +++ b/worksheet2_1/README.md @@ -0,0 +1,3 @@ +# Worksheet 2 Part 1 - Tiny OS + +## Structure diff --git a/worksheet2_1/iso/boot/grub/menu.lst b/worksheet2_1/iso/boot/grub/menu.lst new file mode 100644 index 0000000..9a5b08c --- /dev/null +++ b/worksheet2_1/iso/boot/grub/menu.lst @@ -0,0 +1,5 @@ +default=0 +timeout=0 + +title os +kernel /boot/kernel.elf diff --git a/worksheet2_1/iso/boot/grub/stage2_eltorito b/worksheet2_1/iso/boot/grub/stage2_eltorito new file mode 100644 index 0000000..e69de29 diff --git a/worksheet2_1/loader.asm b/worksheet2_1/loader.asm new file mode 100644 index 0000000..bad63b8 --- /dev/null +++ b/worksheet2_1/loader.asm @@ -0,0 +1,17 @@ +global loader + +MAGIC_NUMBER equ 0x1BADB002 +FLAGS equ 0x0 +CHECKSUM equ -MAGIC_NUMBER + +section .text +align 4 + +dd MAGIC_NUMBER +dd FLAGS +dd CHECKSUM + +loader: + mov eax, 0xCAFEBABE +.loop: + jmp .loop diff --git a/worksheet2_1/loader.o b/worksheet2_1/loader.o new file mode 100644 index 0000000000000000000000000000000000000000..77a0c8895f412835d6ed7210d4b37985b671e9e1 GIT binary patch literal 544 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpH?8JNH<QVEcmAj}5UD8R_TAPi-LC;<?` zz`(%Hz`(!^WrHXKMg|5&5Ce)qW`LN23=AkPNnm7PXkcJqV1b$eqCsX#qM7%Ak%7S) zWB?Sy%!6_nm^Q4H2C@J72R+%bZ`Z$5um6F#2&`9<T2aEFSDaB?QdE+d#GqGPnG2yI ze1uA@EM)sw7(V_-Rs;%p9+1DFZeU>e_#fncgqn~4<rx?lKyHJGef+P_z`y_s3kaW) zL4$#T0b~Y<F93?koczR;)FQpa;#>w_M|V%>c)w6zC)XebHy=m$U<PLoS7-0wP+ta! QGAN~&lb>GzGJ$~s01J9JVgLXD literal 0 HcmV?d00001 diff --git a/worksheet2_1/source/link.ld b/worksheet2_1/source/link.ld new file mode 100644 index 0000000..dca86d6 --- /dev/null +++ b/worksheet2_1/source/link.ld @@ -0,0 +1,22 @@ +ENTRY(loader) + +SECTIONS { + . = 0x00100000; + + .text ALIGN (0x1000) : { + *(.text) + } + + .rodata ALIGN (0x1000) : { + *(.rodata*) + } + + .data ALIGN (0x1000) : { + *(.data) + } + + .bss ALIGN (0x1000) : { + *(COMMON) + *(.bss) + } +} diff --git a/worksheet2_2/Makefile b/worksheet2_2/Makefile new file mode 100644 index 0000000..c63025f --- /dev/null +++ b/worksheet2_2/Makefile @@ -0,0 +1,24 @@ +LD = ld +CC = gcc +CFLAGS = -m32 -ffreestanding -nostdlib -fno-stack-protector +AS = nasm +ASFLAGS = -f elf + +SRC_DIR = . +SOURCES = $(SRC_DIR)/kmain.c $(SRC_DIR)/pic.c $(SRC_DIR)/interrupts.c $(SRC_DIR)/keyboard.c +ASM_SOURCES = $(SRC_DIR)/io.s $(SRC_DIR)/interrupt_asm.s $(SRC_DIR)/interrupt_handlers.s +OBJECTS = $(SOURCES:.c=.o) $(ASM_SOURCES:.s=.o) + +all: kernel.elf + +kernel.elf: $(OBJECTS) + $(LD) -m elf_i386 -Ttext 0x1000 -o kernel.elf $(OBJECTS) + +$(SRC_DIR)/%.o: $(SRC_DIR)/%.c + $(CC) $(CFLAGS) -c $< -o $@ + +$(SRC_DIR)/%.o: $(SRC_DIR)/%.s + $(AS) $(ASFLAGS) $< -o $@ + +clean: + rm -f $(SRC_DIR)/*.o kernel.elf diff --git a/worksheet2_2/frame_buffer.c b/worksheet2_2/frame_buffer.c new file mode 100644 index 0000000..f6eff01 --- /dev/null +++ b/worksheet2_2/frame_buffer.c @@ -0,0 +1,12 @@ +#include "frame_buffer.h" +#include "io.h" + +#define FRAME_BUFFER_ADDRESS 0xB8000 +#define MAX_COLS 80 +#define MAX_ROWS 25 + +void fb_write_cell(u32int index, char c, u8int fg, u8int bg) { + volatile char *fb = (volatile char *)FRAME_BUFFER_ADDRESS; + fb[index * 2] = c; + fb[index * 2 + 1] = (bg << 4) | (fg & 0x0F); +} diff --git a/worksheet2_2/frame_buffer.h b/worksheet2_2/frame_buffer.h new file mode 100644 index 0000000..2351f7e --- /dev/null +++ b/worksheet2_2/frame_buffer.h @@ -0,0 +1,11 @@ +#ifndef INCLUDE_FRAME_BUFFER_H +#define INCLUDE_FRAME_BUFFER_H + +#include "types.h" + +#define FB_DARK_GREY 8 +#define FB_GREEN 2 + +void fb_write_cell(u32int index, char c, u8int fg, u8int bg); + +#endif diff --git a/worksheet2_2/hardware_interrupt_enabler.s b/worksheet2_2/hardware_interrupt_enabler.s new file mode 100644 index 0000000..e69de29 diff --git a/worksheet2_2/interrupt_asm.o b/worksheet2_2/interrupt_asm.o new file mode 100644 index 0000000000000000000000000000000000000000..c189cad33ad2baedfad434b3ae14e29085b216ca GIT binary patch literal 432 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpH?8JNH<QVEcmAj}5UD8R_TzyW20C;<?` zz`(%Hz`(!^WrHXMMg|5&5Ce)qW`LN23=AkP31Eb{l?AFFM1#zfgz`apKzITp1A`QZ z0mU%$pj?J-7ZnzMMv22PK7(FKYDEcyUU5coNl{5+5`$iGWiEt<@Zk!vGmy<^VfgqT qSrsUxLH>Y=34lUAGp{7IsHn7{BtEe?SFe~MCqFSIJ~O2Rst5oAUmSV> literal 0 HcmV?d00001 diff --git a/worksheet2_2/interrupt_asm.s b/worksheet2_2/interrupt_asm.s new file mode 100644 index 0000000..da09acb --- /dev/null +++ b/worksheet2_2/interrupt_asm.s @@ -0,0 +1,6 @@ +global load_idt + +load_idt: + mov eax, [esp + 4] + lidt [eax] + ret diff --git a/worksheet2_2/interrupt_handlers.o b/worksheet2_2/interrupt_handlers.o new file mode 100644 index 0000000000000000000000000000000000000000..3c001059dbf17659fcea2285aa91ae9f13215e8e GIT binary patch literal 576 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpJY7?{8;QVEcmAj}5UXu!z8zz1c6C;<?` zz`(%Hz`(!^WrHXOMg|6L5Ce)qW`LN23=AkPDPUw^NMK-KU_rtlGbPc?yTHi65C$>; ziecs{GB7Z3Ld8Io0TTlQ2UIUe4ai&&KjFon|Ns9dp3h>)Qhfc1fq_A<B(<W1L9aNY zxTL5gF^NI1xH1<)L-|FiIS@4<V=*wuY?vSm!^i(HHi!nrga(KK$BYbOa5e)2$bXIu z5O;!v1wb*EnOBlpR8(3}5}%Qnmy(lORIFFbfFa0`oS&PUpBIlQfguuaYz#6Sib1i@ J1PTl&9{?s(K}!Gt literal 0 HcmV?d00001 diff --git a/worksheet2_2/interrupt_handlers.s b/worksheet2_2/interrupt_handlers.s new file mode 100644 index 0000000..35fa4bc --- /dev/null +++ b/worksheet2_2/interrupt_handlers.s @@ -0,0 +1,17 @@ +extern interrupt_handler + +%macro no_error_code_interrupt_handler 1 +global interrupt_handler_%1 +interrupt_handler_%1: + push dword 0 + push dword %1 + jmp common_interrupt_handler +%endmacro + +common_interrupt_handler: + pushad + call interrupt_handler + popad + iret + +no_error_code_interrupt_handler 33 diff --git a/worksheet2_2/interrupts.c b/worksheet2_2/interrupts.c new file mode 100644 index 0000000..80e84cc --- /dev/null +++ b/worksheet2_2/interrupts.c @@ -0,0 +1,115 @@ +#include "interrupts.h" +#include "pic.h" +#include "io.h" +#include "frame_buffer.h" +#include "keyboard.h" +#include "types.h" + +#define INTERRUPTS_DESCRIPTOR_COUNT 256 +#define INTERRUPTS_KEYBOARD 33 +#define INPUT_BUFFER_SIZE 256 + +u8int input_buffer[INPUT_BUFFER_SIZE]; +u8int buffer_index = 0; + +struct IDTDescriptor idt_descriptors[INTERRUPTS_DESCRIPTOR_COUNT]; +struct IDT idt; + +u32int BUFFER_COUNT; + +void interrupts_init_descriptor(s32int index, u32int address) +{ + idt_descriptors[index].offset_high = (address >> 16) & 0xFFFF; // offset bits 0..15 + idt_descriptors[index].offset_low = (address & 0xFFFF); // offset bits 16..31 + + idt_descriptors[index].segment_selector = 0x08; // The second (code) segment selector in GDT: one segment is 64b. + idt_descriptors[index].reserved = 0x00; // Reserved. + + /* + Bit: | 31 16 | 15 | 14 13 | 12 | 11 10 9 8 | 7 6 5 | 4 3 2 1 0 | + Content: | offset high | P | DPL | S | D and GateType | 0 0 0 | reserved + P If the handler is present in memory or not (1 = present, 0 = not present). Set to 0 for unused interrupts or for Paging. + DPL Descriptor Privilige Level, the privilege level the handler can be called from (0, 1, 2, 3). + S Storage Segment. Set to 0 for interrupt gates. + D Size of gate, (1 = 32 bits, 0 = 16 bits). + */ + idt_descriptors[index].type_and_attr = (0x01 << 7) | // P + (0x00 << 6) | (0x00 << 5) | // DPL + 0xe; // 0b1110=0xE 32-bit interrupt gate +} + +void interrupts_install_idt() +{ + + interrupts_init_descriptor(INTERRUPTS_KEYBOARD, (u32int) interrupt_handler_33); + + + idt.address = (s32int) &idt_descriptors; + idt.size = sizeof(struct IDTDescriptor) * INTERRUPTS_DESCRIPTOR_COUNT; + load_idt((s32int) &idt); + + /*pic_remap(PIC_PIC1_OFFSET, PIC_PIC2_OFFSET);*/ + pic_remap(PIC_1_OFFSET, PIC_2_OFFSET); + + // Unmask keyboard interrupt (IRQ1) + outb(0x21, inb(0x21) & ~(1 << 1)); +} + + +/* Interrupt handlers ********************************************************/ + +void interrupt_handler(__attribute__((unused)) struct cpu_state cpu, u32int interrupt, __attribute__((unused)) struct stack_state stack) { + u8int input; + u8int ascii; + static u32int fe_count = 0; + static u32int debug_count = 0; + + switch (interrupt) { + case INTERRUPTS_KEYBOARD: + while ((inb(0x64) & 1)) { + input = keyboard_read_scan_code(); + + // Debug output + /*fb_write_cell(debug_count * 3 + 0, 'x', FB_GREEN, FB_DARK_GREY); + fb_write_cell(debug_count * 3 + 1, "0123456789ABCDEF"[input >> 4], FB_GREEN, FB_DARK_GREY); + fb_write_cell(debug_count * 3 + 2, "0123456789ABCDEF"[input & 0xF], FB_GREEN, FB_DARK_GREY);*/ + debug_count++; + + // Track FE codes + if (input == 0xFE) { + fe_count++; + continue; + } + + // Only process if it's not a break code + if (!(input & 0x80)) { + if (input <= KEYBOARD_MAX_ASCII) { + ascii = keyboard_scan_code_to_ascii(input); + if (ascii != 0) { + if (ascii == '\b') { + if (BUFFER_COUNT > 0) { + BUFFER_COUNT--; + fb_write_cell(BUFFER_COUNT, ' ', FB_DARK_GREY, FB_GREEN); + } + } + else if (ascii == '\n') { + BUFFER_COUNT = ((BUFFER_COUNT / 80) + 1) * 80; + } + else { + fb_write_cell(BUFFER_COUNT, ascii, FB_DARK_GREY, FB_GREEN); + BUFFER_COUNT++; + } + } + } + } + + buffer_index = (buffer_index + 1) % INPUT_BUFFER_SIZE; + } + + pic_acknowledge(interrupt); + break; + + default: + break; + } +} \ No newline at end of file diff --git a/worksheet2_2/interrupts.h b/worksheet2_2/interrupts.h new file mode 100644 index 0000000..be53adc --- /dev/null +++ b/worksheet2_2/interrupts.h @@ -0,0 +1,40 @@ +#ifndef INCLUDE_INTERRUPTS_H +#define INCLUDE_INTERRUPTS_H + +#include "types.h" + +struct IDT { + u16int size; + u32int address; +} __attribute__((packed)); + +struct IDTDescriptor { + u16int offset_low; + u16int segment_selector; + u8int reserved; + u8int type_and_attr; + u16int offset_high; +} __attribute__((packed)); + +struct cpu_state { + u32int eax; + u32int ebx; + u32int ecx; + u32int edx; + u32int esi; + u32int edi; + u32int ebp; +} __attribute__((packed)); + +struct stack_state { + u32int error_code; + u32int eip; + u32int cs; + u32int eflags; +} __attribute__((packed)); + +void interrupts_install_idt(); +void interrupt_handler_33(); +void load_idt(u32int idt_address); // Declaration for the `load_idt` function + +#endif diff --git a/worksheet2_2/interrupts.o b/worksheet2_2/interrupts.o new file mode 100644 index 0000000000000000000000000000000000000000..0979c78593cea0b72d4753ce773c4c1251ec9911 GIT binary patch literal 2448 zcmX^2>+L^w1_lOZ1_lO31_lNe1_p)`Acg{j?*U>nU;-az28Jh$3=Gc93=AOsAPmwA zQW+m#l3Gy$VnJ|xe28mA2!stIjiLHMdNf!W7+gUTEDQ}G3WVe1lk;<P^YcJ#5RQ*` zaSU+;u^<>^FE*zki^az$6&FL4gGqEVT$mXcIKVOt3`|fOM4_5dke``Xl3D~cC_diP zH^4s#?i-Ll1Q-|?#92W)5tt3ZWH4f2V32@@F9QP~0|Z0t1c@iGGcX7<Ffh1qFfjNq zGB9v6Ffar_^@H36!k};hnaK+k$3_LPL*frzF0}J$*b9(gM7J+bw=YMxFVDf30*w#< z|7T!G>pa&T%F*3n#0+AWTx9F^<-sOnauK2IxXVQ*4hA^?n9D^L29U80AVZG1oM7#X zi#?o{rpGVe0<x7MwDW268wrRDI$i&CH*8^IU^vdAqR7C&(CMPW@*?{G|Nq^tf4V!? zFflN6PuRf3z|a}U1mUI~XJp{$ZUD)2vZ%Z;`2YX^aTXN?1_p-XE-EY<3=9k}WFTT7 z<6a2-|NozV+kxf>f1wueZ#w|C<NLq=|C^6U#2!wY5Zd`PJgoVR0n9}Yx?N4WeGR%p zb-GJ6x@%QBOJ8(`zUlP+(CPZ6+f}9cg(83JeMSa`mmuGOiQ_CPDIl8{{e#-Z*!+Wm zzhxC81H+5HfB*k?9PD;|(Bb>MyF;6afuZ>zV<(uwzs>cz?LP(v2L4uY1_p+1*9YAl z>M#W$#>>TE=es^v1!V+~nXQJ53=ANB%|Gh-`{kh=P)MkO>~Vd@zs>a-NMQ@uTrh`& zzcmqRe1jOscnb#pHZPEf?}P3}kVv-xgl<0cAHwK_3Uo7ccY+jjvZ#Q97aGhQpj>j? zMTG~H5?`$S`~UyTZjdj)wsG;df)aRl=!5Pikk)R7ouI_qJqg4yy!8EJCnzwQ4>D$- z4Cn^Cr<3EQJIFPz4<P(*hE5h0{(Y{`KoND^MFrJ5yT72s@u0f{WL`IC_XH5#e2@{M zx03@LA!tOm>jVC64Qe32A7I=GD%fUz{|Snciya*x(U;c$K!&P-!tvgp|Nmctaxd77 z<|77i@v(<NF^z)dm>C!Z85nr^m>Cv<${q#=hJ~_>3=BV*Q295Q7?yy_1epAJH2!fk z{yrvf`N=y6O}qz<UyjDlLgV{G&Cy2_S4ZQ^qw&Si_<U&mKa8mUxyA@Cy?B=~GAsd= zpD=&UMdP<JGA!``RVvVMszKxDF)}dlGBEH)F)}c4F);A5GBPj-Ffj1GVSw--FfcF( zF);9+0i`nr2HqnK3`@+R=7G}QPBi`o28JcpNb;-D<QGE9U)G5X3`^{h)MX;+<78l9 zh(_akqw(#~_$p|8P#F!%Eg-XaAZ};iV`g9gg@qod<Y#7J0EHW<j^Ss5)Soj!>OlTy zWMHU;vO$Rtlx6uD8NijI8Y8$qW&+g%M<IRzDPc&5vO)IdK-i3+N=*@>9;{{!L>z2@ z36eMy68j2F4Fdy15)xY)NzF$j@m)x4hWMn?w6xTs_{_YN)Cz`paD7=+T2K<7k(if~ zlUk&glA2VS9-o|Fnpc8NIxQ7Lt~fq3uec;JCnr8LrGz0qCqFR-!pcl3iBCx_PA<wU zD9JA>MluehB@<Z^Ne<=`kWfKs3Dm(1@dcU5@kOb*i3JStX-V<rMVTe3@yV$<ISldH zsg+6jiA5>##mR|z@yYoqsqrQG@rlLBnVAr6iOJb{`Q<sODe0+5s*6$+k+d+x=a-fw jfh<j8h<6Hgb8`)fclHnU3jqn0q!u9uQoOM-0|Ns9zOoWW literal 0 HcmV?d00001 diff --git a/worksheet2_2/io.h b/worksheet2_2/io.h new file mode 100644 index 0000000..79bcf8c --- /dev/null +++ b/worksheet2_2/io.h @@ -0,0 +1,7 @@ +#ifndef INCLUDE_IO_H +#define INCLUDE_IO_H + +void outb(unsigned short port, unsigned char value); // Writes a byte to the given I/O port +unsigned char inb(unsigned short port); // Reads a byte from the given I/O port + +#endif diff --git a/worksheet2_2/io.o b/worksheet2_2/io.o new file mode 100644 index 0000000000000000000000000000000000000000..5eeb851de12d0a5f894a747042e4a05b097f548b GIT binary patch literal 416 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpH?8JNH<QVEcmAj}5UD8R_Tzzt=CC;<?` zz`(%Hz`(!^WrHXMMg|5&5Ce)qW`LN23=AkP31Eb{l?AFFM1#zfgz`apKzIV0y)g4Y zav+@69iqb0<)Xsz?l6eUz@S%>T2aEFSDaB?QdE+d#GqGPnG2yIe26NXB(nJ|3?Kg^ dD+Gl!EIdHs0-%u3%-1Vs$S*BP0*Np%003VE7+wGX literal 0 HcmV?d00001 diff --git a/worksheet2_2/io.s b/worksheet2_2/io.s new file mode 100644 index 0000000..da2d5f9 --- /dev/null +++ b/worksheet2_2/io.s @@ -0,0 +1,9 @@ +global outb + +; outb - Writes a byte to the given I/O port +; Parameters: AL contains the byte to write, DX contains the port address +outb: + mov dx, [esp + 4] ; Load the I/O port address into DX + mov al, [esp + 8] ; Load the value into AL + out dx, al ; Write the value to the port + ret diff --git a/worksheet2_2/keyboard.c b/worksheet2_2/keyboard.c new file mode 100644 index 0000000..56a7d6c --- /dev/null +++ b/worksheet2_2/keyboard.c @@ -0,0 +1,43 @@ +#include "keyboard.h" +#include "io.h" + +#define KEYBOARD_DATA_PORT 0x60 + +u8int keyboard_read_scan_code() { + return inb(KEYBOARD_DATA_PORT); +} + +u8int keyboard_scan_code_to_ascii(u8int scan_code) { + switch (scan_code) { + case 0x1E: return 'a'; + case 0x30: return 'b'; + case 0x2E: return 'c'; + case 0x20: return 'd'; + case 0x12: return 'e'; + case 0x21: return 'f'; + case 0x22: return 'g'; + case 0x23: return 'h'; + case 0x17: return 'i'; + case 0x24: return 'j'; + case 0x25: return 'k'; + case 0x26: return 'l'; + case 0x32: return 'm'; + case 0x31: return 'n'; + case 0x18: return 'o'; + case 0x19: return 'p'; + case 0x10: return 'q'; + case 0x13: return 'r'; + case 0x1F: return 's'; + case 0x14: return 't'; + case 0x16: return 'u'; + case 0x2F: return 'v'; + case 0x11: return 'w'; + case 0x2D: return 'x'; + case 0x15: return 'y'; + case 0x2C: return 'z'; + case 0x39: return ' '; + case 0x0E: return '\b'; + case 0x1C: return '\n'; + default: return 0; + } +} diff --git a/worksheet2_2/keyboard.h b/worksheet2_2/keyboard.h new file mode 100644 index 0000000..aea190f --- /dev/null +++ b/worksheet2_2/keyboard.h @@ -0,0 +1,11 @@ +#ifndef INCLUDE_KEYBOARD_H +#define INCLUDE_KEYBOARD_H + +#include "types.h" + +#define KEYBOARD_MAX_ASCII 127 // Maximum ASCII value supported by the keyboard + +u8int keyboard_read_scan_code(); +u8int keyboard_scan_code_to_ascii(u8int scan_code); + +#endif diff --git a/worksheet2_2/keyboard.o b/worksheet2_2/keyboard.o new file mode 100644 index 0000000000000000000000000000000000000000..7b401d5ea7ed604a6cb2ccef719e7e63d1bc2981 GIT binary patch literal 944 zcmX^2>+L^w1_lOZ1_lO31_lOJ1_lNm5JLgNuVKIrB$yZ&G#D8eKr~1{2!phNRL94c zq*j!GSP&c^AL1Gj0%5~QkUo%p76t|e2WE&}3@i){FnJ>e1_lYJn;01Q7$BH|L6d=j zL4bjQ!GoEBfrEj8feETEfEnV45@rSl8wLgjZUzR10GMG=8l)D4VeW(q6Geq~K5c%( zahydZfq{YH#k>Fi|MPD<(0qg=_HY`%ybA*ZSf1wv$gGG?*DqbJ9Q@l{IhqfA>U90l z{6d?*U5t@|q1*RMx9gAYmPT7f1_s6x{~sK4{h#;}6z<1d|0lit&cMKM%=Lfr%Xbh) z%FCw^M(WEu5JuX|%MeET%To|W#>;~cM&`>M5JuL^^$<q(%ViKo&da$FM()cg5Juk1 zZU`g)WfO!^@UjxZD12D}VHCYghcJp?#z7b*FGC@W(w9CEM%hbe2&4R^6@*do(h$O^ ze5nCpRK1jkFce;jK^Pn_c_9q0m!RlB=K7z3f1B(7<|90@hvgU<7z`L07<Mx-FnnZS zVDM*PU^v3Sz;F$eMj06x?lUkj6f-a|tYlzd*u(%)3sSER)u+wCz;Kp<fx(S|fgyr{ zfgzEBfgy{5fdQ0`TNxM_`jGU1^uaJF&HrLxV6X*6F9QRE2?GPe0tN<#={VGb^ocS; zQY8}u18)W+1H%Re76v&61_pj;0s~PXwgLkKgE>4cGcYj3XQx&s<tG-U#1|(g=EW!H dr=-T0<i{r#Cue3NNfxChBB@}A&&*3=00610&<X$m literal 0 HcmV?d00001 diff --git a/worksheet2_2/kmain.c b/worksheet2_2/kmain.c new file mode 100644 index 0000000..4806ffe --- /dev/null +++ b/worksheet2_2/kmain.c @@ -0,0 +1,13 @@ +#include "interrupts.h" +#include "pic.h" +#include "keyboard.h" + +void kmain() { + // Initialize IDT and interrupts + interrupts_install_idt(); + + // Main terminal loop + while (1) { + // Continuously process user input + } +} diff --git a/worksheet2_2/kmain.o b/worksheet2_2/kmain.o new file mode 100644 index 0000000000000000000000000000000000000000..d7f6124a36047132193b1be82c5ec58f7dbeb105 GIT binary patch literal 360 zcmX^2>+L^w1_lOZ1_lO31_lNe1_p*d3=9km3J`t`h>ZmcFfcGkFfuTJXpnvo2I&VW zjgK!$ttbJpAUHlg#5E!W!iJF`eIWfH`!pCKb}_IpG{EGIK;}c;#K6GE0Kp6lOi*zH zMhM%35$se3ZUzR10GMVd4RQ|*LxqT@LOY)}zu|cC_5c6>FMt34{~zi<UP%T927ZvC pP`5#u3=Hv^c_pbuMWqEL#qpVW#U+V3Iq{h(B@FS|xrv#13;?5ACD{M~ literal 0 HcmV?d00001 diff --git a/worksheet2_2/loader.s b/worksheet2_2/loader.s new file mode 100644 index 0000000..e69de29 diff --git a/worksheet2_2/pic.c b/worksheet2_2/pic.c new file mode 100644 index 0000000..2e59879 --- /dev/null +++ b/worksheet2_2/pic.c @@ -0,0 +1,19 @@ +#include "io.h" +#include "pic.h" +#include "types.h" + +void pic_remap(s32int offset1, s32int offset2) { + outb(PIC_1, 0x11); + outb(PIC_2, 0x11); + outb(PIC_1 + 1, offset1); + outb(PIC_2 + 1, offset2); + outb(PIC_1 + 1, 0x04); + outb(PIC_2 + 1, 0x02); + outb(PIC_1 + 1, 0x01); + outb(PIC_2 + 1, 0x01); +} + +void pic_acknowledge(u32int interrupt) { + if (interrupt < 40) outb(PIC_1, 0x20); + if (interrupt >= 40) outb(PIC_2, 0x20); +} diff --git a/worksheet2_2/pic.h b/worksheet2_2/pic.h new file mode 100644 index 0000000..b3fda58 --- /dev/null +++ b/worksheet2_2/pic.h @@ -0,0 +1,14 @@ +#ifndef INCLUDE_PIC_H +#define INCLUDE_PIC_H + +#include "types.h" + +#define PIC_1 0x20 +#define PIC_2 0xA0 +#define PIC_1_OFFSET 0x20 // Interrupt vector offset for PIC1 +#define PIC_2_OFFSET 0x28 // Interrupt vector offset for PIC2 + +void pic_remap(s32int offset1, s32int offset2); +void pic_acknowledge(u32int interrupt); + +#endif diff --git a/worksheet2_2/pic.o b/worksheet2_2/pic.o new file mode 100644 index 0000000000000000000000000000000000000000..97a4d53beebf351f120dc505b4738deb2d0dbe68 GIT binary patch literal 700 zcmX^2>+L^w1_lOZ1_lO31_lNe1_p*d3=9km3J`t`h>ZnvF)}bnFfuTJXpnvo2I&VW zjgK!$ttbJpAUHlg#5E!W!iJF`eIWfH`&5`17`Q+ZEDQ}G3WSXq7#Jj=Zen2IV}M`= z1}3O@2@}N4Gng0{R2Uc-xEUB20zev(Fi0&3!`y`=MUWZV`Ly{BN4G0aw=2hS78L~s z28QD<DlCEw3=A(G{Qv*|IE%^xWU({<|Nn<5Rb*gb;NNzj(?x~l#Wt`g&v6!&g-D_c zAo@WHL1u!2;6)Ea45SPs26Fa`3Wyj?9mpFmQXpb5bzrf8|Ns9tAK{2SoR+4?FW&<8 z8_fM2&9xjF{LLaDw<5d&^3DrMkT#HP6I2%FA+YT4e^5gi7#JDB;m-S*0Ya~V(lekm z$VMgx2HpZFKL$#>L1_ahEd!-_Kw-hiz;FN>zx*IyFfcI4Liu11#1~{H#}}pMCKfP& YnTg5SdHLlzsVV8H4DtD;B}ohn0MpccAOHXW literal 0 HcmV?d00001 diff --git a/worksheet2_2/types.h b/worksheet2_2/types.h new file mode 100644 index 0000000..f417311 --- /dev/null +++ b/worksheet2_2/types.h @@ -0,0 +1,13 @@ +#ifndef INCLUDE_TYPES_H +#define INCLUDE_TYPES_H + +typedef unsigned char u8int; // 8-bit unsigned integer +typedef char s8int; // 8-bit signed integer + +typedef unsigned short u16int; // 16-bit unsigned integer +typedef short s16int; // 16-bit signed integer + +typedef unsigned int u32int; // 32-bit unsigned integer +typedef int s32int; // 32-bit signed integer + +#endif diff --git a/worksheet_0/foo.txt b/worksheet_0/foo.txt new file mode 100644 index 0000000..d535078 --- /dev/null +++ b/worksheet_0/foo.txt @@ -0,0 +1,5 @@ +10 +20 +30 +40 +54 diff --git a/worksheet_0/task1_pointer b/worksheet_0/task1_pointer new file mode 100644 index 0000000000000000000000000000000000000000..42cc2a737cf386cddbff6d622cb5bfae888e7178 GIT binary patch literal 33320 zcmX^A>+L^w1_nlE1_lNu1_lNJ5N2UuXk}1f00Bt`1_loX28Q_f07rM%DAyo=kSHo< zMCD@Tfz0V(1ep`!8WDo31gzfyRg3}3XJueu0AUuWbbNeCYDEc@19lgxc@Fjr3?TEI zph`e|m|n0D3qu2#h7$4d#U-Ul#ZVrm`<kHUu|ZXU_)sR8;((e5laG&2E-op`%u5H$ zVw%?hH4hTH3=AMXR4JGO#Q~TBCF0{t^U5>xQsOi7((<wRcLmhE2&j4xAKeV76qo|V z!wj%FE{-9N@y`B!!I0Q+fP@<?+|g-J`T${2*n-kXe0+L7QZz8c$745-18ge;1IRp( zei#=NULdnze2}{!>CDH|&)e0-6XGfcP;7zKLDK_>57MIn^(06Rgh65;Y{J0M0CFEl zT?PXKgE5q!(ZIl908Qf(3=9kl8W<RO7#J8b8W|W4FfcH1GcYg&fDB+@VBmyekQE?t zWb>g);8a2*B;UXVpbS0+25=4n*`Z%rT%@0qnWUdmnUeyQmu6sK0J%f=%4)0m7DjvK z?yD&jJ@oFB5mX<<PLL^l;Pea*JNEC)TA=(1H3LLxFfcTL%mJly5Fds?_F6#g0QrM~ z!GaYO!*I9cWF`ey7MG;v>N)A9ROVzRL3FA?&7aZ0zyOLnO(-7}UJw<d<Y)+thQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-R~z-Vg}&=zQwY{6^ro>mQIKkGuZh z0_~XZb^YPd>H5K=+x0^?NAp3(PLA%<A0EB7q6`cS8yH@IcGemm@Mu0F5PSH)Y6SxW zLs()?X{thgnnIpJVp>URkwRu(a#3n-YF>$zf@%sEcn`1)$OZ-m24otvw->bc7qmSZ zgkk&BL2RgUFa_E_%)`LQAOJQAECktN3}%9MOG6l=<Y)+thQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinz=QzkE_%@2=b$^}L5Bi>Fw7+^ zFb4E4aTphL=Qx7{8~9##m>5VOBj`W^kU)GvQD$CA8i)zTjPVRYAO=XDnc+Yk0|Qfh zZbp1+MQU<sNossXYGO)i5d&v#VrCu#F9TQsNIA&N6c7R8FfcHvFfcH{?obB_#i8-@ z7#JARm>C%gpV+5^<Uv~X7#SEqXC#2wVjwe+_#iQmnNA?Z44@m*85sP~<dN+MIiH^q ze8W8WBn6Op{7C9SXEQKDi~*Ynx<4L-6&T{NcsCyGU06`*hZd(673*gtRwd??rB-DY z<)`PA>bs;CXP4v`==&F>7A2Ns=A{Q$mZawDm**E{7iXlVmc$$CGn6D2XB);B<Y(rU zq!#HVGw2r-WtJtDr0SO?7U`$u=cItl&CAnIPqVbBOe;z;HnvQzFpIB9%SbXzO0hIC bFfcGk&(jalM=?m(+%Vb1G*K^~fq?-4n(gFA literal 0 HcmV?d00001 diff --git a/worksheet_0/task1_pointer.c b/worksheet_0/task1_pointer.c new file mode 100644 index 0000000..103b7d7 --- /dev/null +++ b/worksheet_0/task1_pointer.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +int main() { + int n = 10; + int *ptr_to_n = &n; + + // Increment the value of n using the pointer + (*ptr_to_n)++; + printf("Value of n after increment: %d\n", n); + + return 0; +} diff --git a/worksheet_0/task1_pointer.dSYM/Contents/Info.plist b/worksheet_0/task1_pointer.dSYM/Contents/Info.plist new file mode 100644 index 0000000..e8b7703 --- /dev/null +++ b/worksheet_0/task1_pointer.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task1_pointer</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task1_pointer.dSYM/Contents/Resources/DWARF/task1_pointer b/worksheet_0/task1_pointer.dSYM/Contents/Resources/DWARF/task1_pointer new file mode 100644 index 0000000000000000000000000000000000000000..258e70a0192cae088ae54f8b3650823ef962d3bb GIT binary patch literal 9119 zcmX^A>+L^w1_nlE1_lN$1_lNW1_lNJHU>D5W?*2DU|?X-y|UVBzJ<}Ax%+AgMGw6@ zWds#x1gqp@U|;}Y1_mamID-I$tsua_Aj81GAj!bM;K9Ja5Fa1l=<XWj8srbwh(bWj zLJ`8?fXwM&1ep`!8WDmj4c6~~DhA`RGB7ZJFbh;5KE5Qiq6EqTy9?Dk2YUtvka<oB zB@8gVU?CQU1~3gJ;^T`;N|TDAJWTgBLCr%7TDV#eg9B<FOg=t7xwxb#GcO$^iN$># zQ1cX^^5_&O9+1W2<4g0(GxJj7GxO5&v6#04YF-4ACUi59q`>hx18k0qV~AtCv%g<3 zBsLr%;l_X?9zf{~gh62|0M?(Lj}#3I@$uNr1Eout{UH4?HYmJ6X2JNN^Z`j{KAwKw zt}dPsS22KM3#<-gDM&GtwgIsjAZ`ZBL-`<cB$z?*=o0Q2<OUUGU|^U4Q431nU_odE z%!fLPoq>S?#N-4^g7l}PCY7eg=Va!kf`sDZv6~kKk_2I>c_1b>93KxcFR>^wFFmyw z6kaIqi-Nk(0IE5PNb{h{0>iv6sCms$^SX#MFEJ^pD76gae^meSPK1PCG}Js^MJNLY z1@mulNfB5DdiZ5P&69&hUIsz)5(^4)QseUyb5lXN72UkHNf7tJ(nXsR*jk)Kd_0nQ z1&PV%<{g5Xrvf$M5RvAUR2E=$-!rIrQ=#TPBhtM5q^x9+7IgPjPlosx=DuoWkg8EU z8UmvsFd71*Aut*OqaiRF0;3@?TtfiV$Kz*&bcR4pXfXx`27X2c23Y?W)Pm2=h)=CZ zO)f1-jn7C;Oi3+bh|f*T%p0yjGU~6<5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2cb|DbPz`(%5pbnY=Wn}!#$IHOT$Osw-U<6GIl_VBt8^#ypXXcfp7U_ZKj~Ey@ znP6iBBCMQTPg%K2S=n1z1=ze;4cJOqS=nsZZZL5$Ff!^eKvn=i))XK{6p&}sk%O}y z>=KX&2iOHX44^s8N(KgowID$T28JCBsHQM|WME)mV`TmYTDQQ?0&^C~0>&^dkPn#4 zK-2zA6DvSN8jLJZUV$J;j<ptKERz%?0|P4y8%T<QQIJuUPneaNuc?ObeLbImxHO+2 zqYxVd1Ct5^GoKwdH#Y+VGl<E}ZO6^Pz@o<pl6H__=Ck6q=Jph}mt<gIHDO?a3otOS z@iTY|gDi3cO*<+i=OpH(E0m=c6=&w>DHxjS8R!`(Xn;j^4NVOU^bGV&4D<{&8T3Po zQ;UlAGZL#3bIMYyGK=!lb4vAHQj4=o@(c9+3sQ>`OEUA)gDXo?bM?#fi?WL|Qd3Lf z4fWCEOy4InsVK3iQr{)DEHx*;Ahk%}IX^cyF)zg@GcPqHKR>5fKiI{)Sl>4>**`c! zuQ(-}0f|YjI~bBP5{nq(;~j&793$g{J)>OXLm~rQ<Kr2?Lq~ZG1tmrCCHe7r44HW) z3?9Lb9?(<=UUk6(3NcWc1Y^(~KLbNn{j3^LngT~G0|R`40kU3@HgvuJ|Ns9FQv;fr z2Vu~P7LZ!diVj8wHU?$}Rt8oEZU#06HU^M-5C+K`G<0w$D@?74F7CM#z`(!&T8&Z1 zz`y`XG$8kaQjH1&!x9ZEu&to<2oeS@j!|J?2)_=RU1eYZrB9HsB?AM43IoIWW{+hc U!(omBNrCuaBfuU8<voZ)0PJQ=ng9R* literal 0 HcmV?d00001 diff --git a/worksheet_0/task1_pointer.dSYM/Contents/Resources/Relocations/x86_64/task1_pointer.yml b/worksheet_0/task1_pointer.dSYM/Contents/Resources/Relocations/x86_64/task1_pointer.yml new file mode 100644 index 0000000..a245ca1 --- /dev/null +++ b/worksheet_0/task1_pointer.dSYM/Contents/Resources/Relocations/x86_64/task1_pointer.yml @@ -0,0 +1,7 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task1_pointer' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003F40, symSize: 0x42 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003F40, symSize: 0x42 } +... diff --git a/worksheet_0/task2_array_pointer b/worksheet_0/task2_array_pointer new file mode 100644 index 0000000000000000000000000000000000000000..d6f76f9bc745f630356eff6d9612f91ea3d06c5e GIT binary patch literal 33456 zcmX^A>+L^w1_nlE1_lNu1_lNJ1_p)%76yh^1_cHXkYr$B@L*tIh>s6&ba#z%4e|$x zqGCo=E><4MoEwZFb3$ArLQs`}^*f-7F+lmO3=9k~3{nvvUy@o;0%AdMd_1ao7wi}q zK;|ujNHc)=EKoL>Vqs_i(@-KlzPO|`sTj(`bYGc0#5^9T3J@R41XCPP^Vq;VkpATS zykdj{(cRaAW*&$S3U{b>3@Sc8xwxb#GcO$~gKpjgsCg1lc@Q7U1XJi{$H$lEm1pLq z#AoKE<%8oDHT+gU&5Ho*W?%sE(anHLfhkbD&H$U^;uzu>@9ggv42fL_NVvh`5uFC5 zHxLHJ6)4Tc$EW8bLJbs-*v*6a6J#DpKiClr3=E*~M|LO3U66F^<LT$^>f#A;6$2>t zL3V=lgY`mF!v?5kkQ@ku<ro+kOc)p%K<)$So4~-pU<~C?XkcJ4faV#Hn@%(^Fz_)j zFdS%PVEDkmz`)JGzz_g6gp+}R0fa$TfW(pA4OIfCRy0D=J6r(D0GSQSk)U*_Us_zG zpOcxSpHi8V0+p9$U|;~bW2fl!PsRL(JJvhxwOk(Ozr%=u0i2T|egc`o2hJa0H?V(a z)`I4Fs4)y03=9n*b3pk9CI+HG_F6#g0QrM~!GaYO!*I9cWF`ey7MG;v>N)A9ROVzR zfpjr2s6ov?(7?dJ!N9<v3FU*r3!-9_91Vfd5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7|tOO>e2bsqxp@2M>ne`BLjm+H-kr~>yP8EFF>C5=w=1&;q~Zrebdd_ z$H2hQ>H5W^*Y%A@r|W~`u6IC6nrrVc^Y@y8cD;AIKJZBPz0+;d;n5xXz$4l9j>o|V zOdgDfJbG<I85kHgFubs0U|{HWz0-VvvD5X=%LD)a|M%!--3Zpq;L+{-!^83fe=BI) ztKk8U<|78NhhKp9&hm5rS8ZWnVEC^JasvYc7Xt%>90LQx1$G98u*96wR4WD56deV} zl$4^>;$kZW)dDW?o?RJ`0~r_?kZF*4puM`F?eZWD+n)|%LzROm(0*SY21W(}ut{Jc z$d+I*Q=kFD5oiFJ#{k|X4VD-sMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E2i6at`o#X)zKConKDfX)ekoCN@}oCQLGNzlFEU<ULa za0Ul92KYVd44~V<85kIu7#JAU7#J9Rpep0z<BLlYle6QKGqU5;5;JocP(;#86N^$9 z;tPs0^Geb{S{UOQgg`XtAOdEF3$+XkO!2uH@u?N5$)zQ!@foR!DXB#aoVkgac?`S^ zU<DxMAUCIg2oQ&Xfx(l3fdO_mI!LG)jX#rtfgz2Vk)h^^eL6@Uq*afRfdO=u0*Ecf zz`&q_#0QC~FfcGI11X03)elV`*?y4o`5D1C$AeE?0GY>+q#ksJ10y8Jz$WTJ%mi5j z<~ySCLHEY<LhqFa-Ng=KgA^(-#A6AbcyREb1T>+b*AFdDEh^T}NUTcCDNC)&EXq&M zDb;sLEzT~<FVOcdNG(b%$;?X+t}IE-)i2L4$}Y}GO)ZHx)MqG3EY3EHPb?}*tc)+n z&&(@HEz(P7&@U*;EK4j&)h|md(of6JNdcLjm#3eeW@%BGR+M6FY?)kP7GIH;kz|;Z dVrgPvU|^7*ryrt^#W>wWQ}a}_G`)NV1^@|eIDr5F literal 0 HcmV?d00001 diff --git a/worksheet_0/task2_array_pointer.c b/worksheet_0/task2_array_pointer.c new file mode 100644 index 0000000..9ebccae --- /dev/null +++ b/worksheet_0/task2_array_pointer.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +int main() { + int array[3] = {10, 30, 2000}; + int *ptr = array; + + for (int i = 0; i < 3; i++) { + printf("Value: %d, Address: %p\n", *(ptr + i), (ptr + i)); + } + + return 0; +} diff --git a/worksheet_0/task2_array_pointer.dSYM/Contents/Info.plist b/worksheet_0/task2_array_pointer.dSYM/Contents/Info.plist new file mode 100644 index 0000000..9fe7f77 --- /dev/null +++ b/worksheet_0/task2_array_pointer.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task2_array_pointer</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task2_array_pointer.dSYM/Contents/Resources/DWARF/task2_array_pointer b/worksheet_0/task2_array_pointer.dSYM/Contents/Resources/DWARF/task2_array_pointer new file mode 100644 index 0000000000000000000000000000000000000000..183e4a333c41a1d8e77ebaec8c1bf7e4861c65dc GIT binary patch literal 9239 zcmX^A>+L^w1_nlE1_lN$1_lNW1_p)%HU>D5W?*2DU|?X_DLVaAF~8xC^-g;&m&f_< zFoKFRf>rV{Fff2H0|OIOoIwD>RuEudkYQk8kYr$B@L*tIh>s6&ba#z%4e|$TL?Iw% zp$K7cK<3<F1ep`!8WDmj4c6~~DhA`RGB7Z}Fi0#uz9hAx1jK^i_;^(FF4!?JfXrJ4 zkp`12U=m8OFf>3}U@AVoxTG|x7|aF{=;oE#L(Jm=Nn*hqQ1f6xA0MBbpI3}<Ai8-i zSj+>3Jr<+ELh<p*#U(|VdFfytX828jng@z&s1g(k-R$`I(!BD_yp;INytI69yrPER z3aEJzNT#5hfg}Y^A2Yz_xHyJ5#yk7_1w&%j0TONuIN}wQZb29nR{~)D>G_CI1NjrX zdC2|*>4&)m6#mHW1f@4fy7lq&^LBOdgt&?U6#F1MLFpW<7i2jD1A`5i193B09?A!q zBf$)IPq<@{8&s5mfnfqfE!-Rhh?F=qv9U8SFo4|02@z(9k55TWDou~i$;?Xy3B|{| zU^TA`BniS$^FT~&7-n8#QDR<tYB2-4d0kNV89+665osPYSzwsA3u@kKsCm1HG%qnJ zsVKD!GyGB~Lc$Lg=c$TNgK<zW{}z`NfmNXU_a@XlRcPehBxqh@K|xMxd|qO1Dk%4( zoA+-L#C@=I@lOeCElwgn9?86d#AI~ytR_RuQ-PXbr3_`@pkU^eR2E=$UmVoDsZjlK zM4FeMl$8w9g6_W0Q1f8!`%J(*kQt+RGz3ONU^E0qLtr!nMnhmU1V%%Eejxzr>+mx| zIxnCmuNVUZ13x1J1FZiGYH{ag#HUuICYP3^#%H7^rlb}z#OEev=F!iQqc)9(z-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2v8IPZ43+yEDX8~3=E8njKBGKK@?~l zfDts!RFYVnZ4{qaRFqg5Uyz@fSCU$!2cGp|VBlnejSz^ia&mF(W)<MDW#wY?V&!A= zVHIa9VP*AV)niL%HDdE()$wArv|+XNV&z=JD$912m6dG*b7ce@GdD*XD+3#IX%iDW z10$mj17yVjWDNph1Oj;m9@(qQ!7c}ha4>>g%)<bhqpW9OVAu>2WME*}$AD@I({~02 z1~x|KKcICE>?|-3fGl7P69D;`c@k)u0Mo=AQ4o)1CWMzD4dSsb1?lF5&TG3vq+;Yj zQtTjY3=B+)j0_B{EMOjoC3xbN6D-3h$f(LE%*xEyRKxeao=-qrnop2Xh>d}PNri!# z&yJg$n}LBD#N_6-<7QxB(PIQjJ4i6|S#eu)dkWi2GBB{3FfhRd7#P^N!D<*7*cll; zg&7z)6d62)&AAyEIQbbsd<F(b(7dEVa!z7ix<XlMQE_H|o`RvNo`If$f(BSr*U;3! zK+izW#6ZtblR-bUIJKx)KO?a!F{doGDzhj*J*QOPCAB!aB)>r4zaX_Ju_QAuJ-D(Y zHCMkpzbLynBQ>=o-cTQVBGLEBOe#t&s?>K$ElbVGFGwxYch1kvP0UO2$;?X)$<NOz z)(>{^F4p%=O!g0s&?`>KW<X++>l%jSjKm^__;|;lAjin~V9zMm_>jl|*Z6n_@Q4*S zDKiw56ftBnWagDHcmz9ofYJ^O!&YZN_@K1_3=CQIvuZ$T6P!R87~l&LkoAHR9J=2B z|NsAosR7O4gD`B>0cdick%5hYnSqsom4Taqje(5;q#lGpW*Ibea3?EFt%)w~xf8&^ zzyMmcQOCf*07_sWw}DcX3IoFu4J)v%pmYrq1}(}_VPFWqUOgFP3Mid}gh5GBg@NIG Vvj-@tqj(ym3~U6b003i%LjZ`vY1{w+ literal 0 HcmV?d00001 diff --git a/worksheet_0/task2_array_pointer.dSYM/Contents/Resources/Relocations/x86_64/task2_array_pointer.yml b/worksheet_0/task2_array_pointer.dSYM/Contents/Resources/Relocations/x86_64/task2_array_pointer.yml new file mode 100644 index 0000000..4d44300 --- /dev/null +++ b/worksheet_0/task2_array_pointer.dSYM/Contents/Resources/Relocations/x86_64/task2_array_pointer.yml @@ -0,0 +1,7 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task2_array_pointer' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003ED0, symSize: 0xA6 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003ED0, symSize: 0xA6 } +... diff --git a/worksheet_0/task3_array_compare b/worksheet_0/task3_array_compare new file mode 100644 index 0000000000000000000000000000000000000000..91bf6aa3b0cca149215178c52bcdfebd5999d466 GIT binary patch literal 33576 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 literal 0 HcmV?d00001 diff --git a/worksheet_0/task3_array_compare.c b/worksheet_0/task3_array_compare.c new file mode 100644 index 0000000..3b90e6c --- /dev/null +++ b/worksheet_0/task3_array_compare.c @@ -0,0 +1,20 @@ +#include <stdio.h> + +int compare_arrays(int *arr1, int *arr2, int length) { + if (!arr1 || !arr2) return 0; // Null check + + for (int i = 0; i < length; i++) { + if (arr1[i] != arr2[i]) return 0; + } + return 1; +} + +int main() { + int array1[] = {1, 2, 3}; + int array2[] = {1, 2, 3}; + + int result = compare_arrays(array1, array2, 3); + printf("Arrays are %s\n", result ? "equal" : "not equal"); + + return 0; +} diff --git a/worksheet_0/task3_array_compare.dSYM/Contents/Info.plist b/worksheet_0/task3_array_compare.dSYM/Contents/Info.plist new file mode 100644 index 0000000..90b83e7 --- /dev/null +++ b/worksheet_0/task3_array_compare.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task3_array_compare</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task3_array_compare.dSYM/Contents/Resources/DWARF/task3_array_compare b/worksheet_0/task3_array_compare.dSYM/Contents/Resources/DWARF/task3_array_compare new file mode 100644 index 0000000000000000000000000000000000000000..7fa8cac7fa4530ce840652e66cfe14592f30fca3 GIT binary patch literal 9503 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 DY|oao literal 0 HcmV?d00001 diff --git a/worksheet_0/task3_array_compare.dSYM/Contents/Resources/Relocations/x86_64/task3_array_compare.yml b/worksheet_0/task3_array_compare.dSYM/Contents/Resources/Relocations/x86_64/task3_array_compare.yml new file mode 100644 index 0000000..7dda917 --- /dev/null +++ b/worksheet_0/task3_array_compare.dSYM/Contents/Resources/Relocations/x86_64/task3_array_compare.yml @@ -0,0 +1,8 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task3_array_compare' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _compare_arrays, symObjAddr: 0x0, symBinAddr: 0x100003E20, symSize: 0x90 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _compare_arrays, symObjAddr: 0x0, symBinAddr: 0x100003E20, symSize: 0x90 } + - { offsetInCU: 0xA1, offset: 0xA1, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x90, symBinAddr: 0x100003EB0, symSize: 0xA6 } +... diff --git a/worksheet_0/task4_file_sum b/worksheet_0/task4_file_sum new file mode 100644 index 0000000000000000000000000000000000000000..d1633a9ab094159a918f9184796df456c6e445f7 GIT binary patch literal 33488 zcmX^A>+L^w1_nlE1_lNu1_lNJ5N2UuXk}1f00Bt`1_loX28Q_f07rM%DAyo=kSHo< zMCD@Tfz0V(1ep`!8WDo31gzfyRg3}3XJueu0AUuWbbNeCYDEc@19lgxc?;|q7(nJN zhbjT_VS2$rEDQ}`8cM{+7nhVK6+?NL?sK<?m?sBS0pdfMV2T539vhek(w|&hQk0pO z4(Fq~FBNK@2~-}$hcdwwC=S33C=nlDnpd8gmlB_umzIykzjL7GML^Yq_~>RprN9&@ z9%g{ead8ZBjCc0;3x>po1H_-Oa7U*>=>vp8VGBwl@$u>TNYTI$ACKKU4X~{Y3?TDB z`e9s9c!A;-#s|3zlFocQ{k&aWJRz=P0L2!_PLO`ET4?NDfO--n2f|=E1_lNb28ITZ z`#}08FfcF}L-`XL7#IwoX<UMVf#F00B&~mFWMFu}z`(%Gz`zgyHH4FafdPa;R)EBj z-3e6!r%p67FmS<n2nHVm12_lqFfcIamlhZ4=VT`7r&Q*oK$S={Fff4JvFTocxX})a z6HQxNmvhMOQ#FF>gZK$#3LiK<gTs#fJF^xje?rXwQ5p;k4Ipzs=^Vs|VUWERP&+{W zU|_Id1;sGjEjgJ<!Ii}&skwSidMTATnMn|xYEbhJG%zr5FfcG^LiwQZf~XiJM?+vV z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMsf&*dUQVZXnvz`-1QGA7(9Ay z*MoMX_nK~CU|@LB4Ptk?e(-3n{lLKA3fc(k(Q7*$Bvr$}z;N944`?6l%TO@;1=xV@ z+7BMRrtKh&y`gV5Fud?(U|?we!N}hV+HBkH`i9x{MW^eFmzV$l|L@UV`{9Km0|P^M z=?jluTaYmu7+!$3G((-!?fS=~`G`X7;s2_e85kJ;t8N98+ri{cFu9w7fgvqFU$3O1 zgrSJRwWuh+NFl!<H7_$ST_G(qCzU}pg(0{!S0O)5A+IzyDYdBBN<lRRyrmfAb{UYP z85kIlY0!RN(0*Ug7I_ec?MVl*p~}G&XwNVY10#a~cn2|92xKIffl3H8KqLejKxQ*A z2sD87f@tX8dFZZdR9&OI(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!3jHg@6L|?(+-=1_sbw=a91iAm&5&|ART8;}yUR=)K|$4s76i z-C<%NeT+;D42(hy42%j442%X042-Zt3F6a|bMlK*8RFAGrynrHrxhnB=A|*j7o>uY zL|}+7D9X$$Nn>DOjAsx683;OvfSF-IEdv8nd~Qa3YDH>tX-R5)MrvY8Y7qlxZenI0 z11|$u0Z2K>?i3IK;xI5UI5RLX!0uWH3Du(U`#{GsFf%eNd19Xqk_TzkV`N|eovQ$1 zi!m@Ts37q{Vk!&_49h`^89+CwGcfp}$s^kjay~yJ_$GSr=?ft9_>t6u&U0Xd7y~vD zWHvHi8)65@TClt^8s8d?54xuwbmu!S0|Nu-APauzo%ZNr3JmdBf-@c*oJ2;EerR!O zQL%nTVpU>JS!z{gQGR+(slH2Uadt_5fxdr1YEfcIW?p)5Wl3tTetCXTc5y~(YDv7I zK0`@jakfc3=+uk&;?i8bWCs0$qRg_yl2rYKE){G1e!!FhT5>1mc0m1#vO#>SS( n6=v}jX&Fg|Nhy{l1_lNO>3RAg`lu%9CK;w0rJ3sGGcW)E34k-y literal 0 HcmV?d00001 diff --git a/worksheet_0/task4_file_sum.c b/worksheet_0/task4_file_sum.c new file mode 100644 index 0000000..c0142c0 --- /dev/null +++ b/worksheet_0/task4_file_sum.c @@ -0,0 +1,18 @@ +#include <stdio.h> + +int main() { + FILE *file = fopen("foo.txt", "r"); + if (!file) { + perror("Error opening file"); + return 1; + } + + int num, sum = 0; + while (fscanf(file, "%d", &num) == 1) { + sum += num; + } + fclose(file); + + printf("Sum of numbers: %d\n", sum); + return 0; +} diff --git a/worksheet_0/task4_file_sum.dSYM/Contents/Info.plist b/worksheet_0/task4_file_sum.dSYM/Contents/Info.plist new file mode 100644 index 0000000..ab1a9be --- /dev/null +++ b/worksheet_0/task4_file_sum.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task4_file_sum</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task4_file_sum.dSYM/Contents/Resources/DWARF/task4_file_sum b/worksheet_0/task4_file_sum.dSYM/Contents/Resources/DWARF/task4_file_sum new file mode 100644 index 0000000000000000000000000000000000000000..869ae3cf5b88669de7f96b182183025dec5e3daf GIT binary patch literal 10544 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 literal 0 HcmV?d00001 diff --git a/worksheet_0/task4_file_sum.dSYM/Contents/Resources/Relocations/x86_64/task4_file_sum.yml b/worksheet_0/task4_file_sum.dSYM/Contents/Resources/Relocations/x86_64/task4_file_sum.yml new file mode 100644 index 0000000..7fe5242 --- /dev/null +++ b/worksheet_0/task4_file_sum.dSYM/Contents/Resources/Relocations/x86_64/task4_file_sum.yml @@ -0,0 +1,7 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task4_file_sum' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003EA0, symSize: 0xA7 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x0, symBinAddr: 0x100003EA0, symSize: 0xA7 } +... diff --git a/worksheet_0/task5_swap_function b/worksheet_0/task5_swap_function new file mode 100644 index 0000000000000000000000000000000000000000..c9c5da377d0be9bb13ba0301899f7b69ae60dbd2 GIT binary patch literal 33616 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 literal 0 HcmV?d00001 diff --git a/worksheet_0/task5_swap_function.c b/worksheet_0/task5_swap_function.c new file mode 100644 index 0000000..bdef2ad --- /dev/null +++ b/worksheet_0/task5_swap_function.c @@ -0,0 +1,22 @@ +#include <stdio.h> + +void swap(void *x, void *y, size_t size) { + char temp[size]; + for (size_t i = 0; i < size; i++) { + temp[i] = ((char *)x)[i]; + ((char *)x)[i] = ((char *)y)[i]; + ((char *)y)[i] = temp[i]; + } +} + +int main() { + int a = 5, b = 10; + swap(&a, &b, sizeof(int)); + printf("a: %d, b: %d\n", a, b); + + double c = 1.23, d = 4.56; + swap(&c, &d, sizeof(double)); + printf("c: %.2f, d: %.2f\n", c, d); + + return 0; +} diff --git a/worksheet_0/task5_swap_function.dSYM/Contents/Info.plist b/worksheet_0/task5_swap_function.dSYM/Contents/Info.plist new file mode 100644 index 0000000..5618a0f --- /dev/null +++ b/worksheet_0/task5_swap_function.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task5_swap_function</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task5_swap_function.dSYM/Contents/Resources/DWARF/task5_swap_function b/worksheet_0/task5_swap_function.dSYM/Contents/Resources/DWARF/task5_swap_function new file mode 100644 index 0000000000000000000000000000000000000000..fb3dde8fa5e6b0dbd619d27e53eb4c3ff325886c GIT binary patch literal 10074 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 S0ZD<Bfh`0_3~1CG5-0!@-3C4Y literal 0 HcmV?d00001 diff --git a/worksheet_0/task5_swap_function.dSYM/Contents/Resources/Relocations/x86_64/task5_swap_function.yml b/worksheet_0/task5_swap_function.dSYM/Contents/Resources/Relocations/x86_64/task5_swap_function.yml new file mode 100644 index 0000000..559320c --- /dev/null +++ b/worksheet_0/task5_swap_function.dSYM/Contents/Resources/Relocations/x86_64/task5_swap_function.yml @@ -0,0 +1,8 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task5_swap_function' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _swap, symObjAddr: 0x0, symBinAddr: 0x100003DE0, symSize: 0xF0 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _swap, symObjAddr: 0x0, symBinAddr: 0x100003DE0, symSize: 0xF0 } + - { offsetInCU: 0xB8, offset: 0xB8, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0xF0, symBinAddr: 0x100003ED0, symSize: 0x8F } +... diff --git a/worksheet_0/task6_print_2d_array b/worksheet_0/task6_print_2d_array new file mode 100644 index 0000000000000000000000000000000000000000..333ed58b42527fb67a97ed38183e457a5b811cc5 GIT binary patch literal 33608 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 CQ*3|$ literal 0 HcmV?d00001 diff --git a/worksheet_0/task6_print_2d_array.c b/worksheet_0/task6_print_2d_array.c new file mode 100644 index 0000000..4e3ee2e --- /dev/null +++ b/worksheet_0/task6_print_2d_array.c @@ -0,0 +1,20 @@ +#include <stdio.h> + +void print_array(int *arr, int width, int height) { + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + printf("%d ", *(arr + i * width + j)); + } + printf("\n"); + } +} + +int main() { + int array[3][3] = { + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9} + }; + print_array(&array[0][0], 3, 3); + return 0; +} diff --git a/worksheet_0/task6_print_2d_array.dSYM/Contents/Info.plist b/worksheet_0/task6_print_2d_array.dSYM/Contents/Info.plist new file mode 100644 index 0000000..04744d1 --- /dev/null +++ b/worksheet_0/task6_print_2d_array.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task6_print_2d_array</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/DWARF/task6_print_2d_array b/worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/DWARF/task6_print_2d_array new file mode 100644 index 0000000000000000000000000000000000000000..c0bfecfdf51effb30cda58bed0675c00bbbcdea7 GIT binary patch literal 9481 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 literal 0 HcmV?d00001 diff --git a/worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/Relocations/x86_64/task6_print_2d_array.yml b/worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/Relocations/x86_64/task6_print_2d_array.yml new file mode 100644 index 0000000..7e8bae5 --- /dev/null +++ b/worksheet_0/task6_print_2d_array.dSYM/Contents/Resources/Relocations/x86_64/task6_print_2d_array.yml @@ -0,0 +1,8 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task6_print_2d_array' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _print_array, symObjAddr: 0x0, symBinAddr: 0x100003E60, symSize: 0xA0 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _print_array, symObjAddr: 0x0, symBinAddr: 0x100003E60, symSize: 0xA0 } + - { offsetInCU: 0xB9, offset: 0xB9, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0xA0, symBinAddr: 0x100003F00, symSize: 0x68 } +... diff --git a/worksheet_0/task7_tic_tac_toe b/worksheet_0/task7_tic_tac_toe new file mode 100644 index 0000000000000000000000000000000000000000..ce8f134e5d221aec56e1f0c52ddcf9ba16b435e9 GIT binary patch literal 33720 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 literal 0 HcmV?d00001 diff --git a/worksheet_0/task7_tic_tac_toe.c b/worksheet_0/task7_tic_tac_toe.c new file mode 100644 index 0000000..67c4807 --- /dev/null +++ b/worksheet_0/task7_tic_tac_toe.c @@ -0,0 +1,59 @@ +#include <stdio.h> + +void print_board(char *board) { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + printf("%c ", *(board + i * 3 + j)); + } + printf("\n"); + } +} + +int check_winner(char *board) { + for (int i = 0; i < 3; i++) { + if (*(board + i * 3) == *(board + i * 3 + 1) && *(board + i * 3 + 1) == *(board + i * 3 + 2) && *(board + i * 3) != ' ') + return 1; + if (*(board + i) == *(board + i + 3) && *(board + i + 3) == *(board + i + 6) && *(board + i) != ' ') + return 1; + } + if (*(board) == *(board + 4) && *(board + 4) == *(board + 8) && *(board) != ' ') return 1; + if (*(board + 2) == *(board + 4) && *(board + 4) == *(board + 6) && *(board + 2) != ' ') return 1; + return 0; +} + +int main() { + char board[3][3] = { + {' ', ' ', ' '}, + {' ', ' ', ' '}, + {' ', ' ', ' '} + }; + int player = 1, moves = 0; + + while (moves < 9) { + print_board(&board[0][0]); + int x, y; + printf("Player %d, enter row and column (0-2): ", player); + scanf("%d %d", &x, &y); + // Check if the input is within bounds + if (x < 0 || x > 2 || y < 0 || y > 2) { + printf("Invalid input. Please enter row and column between 0 and 2.\n"); + continue; + } + + // Check if the cell is already occupied + if (board[x][y] == ' ') { + board[x][y] = (player == 1) ? 'X' : 'O'; + if (check_winner(&board[0][0])) { + print_board(&board[0][0]); + printf("Player %d wins!\n", player); + return 0; + } + player = 3 - player; // Switch player + moves++; + } else { + printf("Cell already occupied. Try again.\n"); + } + } + printf("It's a draw!\n"); + return 0; +} diff --git a/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Info.plist b/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Info.plist new file mode 100644 index 0000000..6c620fd --- /dev/null +++ b/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.task7_tic_tac_toe</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/DWARF/task7_tic_tac_toe b/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/DWARF/task7_tic_tac_toe new file mode 100644 index 0000000000000000000000000000000000000000..caad7032944bfe2b55fd3555b385f88befae44b1 GIT binary patch literal 10100 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 A*Z=?k literal 0 HcmV?d00001 diff --git a/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/Relocations/x86_64/task7_tic_tac_toe.yml b/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/Relocations/x86_64/task7_tic_tac_toe.yml new file mode 100644 index 0000000..6a20380 --- /dev/null +++ b/worksheet_0/task7_tic_tac_toe.dSYM/Contents/Resources/Relocations/x86_64/task7_tic_tac_toe.yml @@ -0,0 +1,9 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/hazalveziroglu/Desktop/OperatingSytem/worksheet_1/task7_tic_tac_toe' +relocations: + - { offsetInCU: 0x26, offset: 0x26, size: 0x8, addend: 0x0, symName: _print_board, symObjAddr: 0x0, symBinAddr: 0x100003AF0, symSize: 0x90 } + - { offsetInCU: 0x41, offset: 0x41, size: 0x8, addend: 0x0, symName: _print_board, symObjAddr: 0x0, symBinAddr: 0x100003AF0, symSize: 0x90 } + - { offsetInCU: 0x9D, offset: 0x9D, size: 0x8, addend: 0x0, symName: _check_winner, symObjAddr: 0x90, symBinAddr: 0x100003B80, symSize: 0x1B0 } + - { offsetInCU: 0xE1, offset: 0xE1, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x240, symBinAddr: 0x100003D30, symSize: 0x1A5 } +... diff --git a/worksheet_1/README.md b/worksheet_1/README.md new file mode 100644 index 0000000..c4ab675 --- /dev/null +++ b/worksheet_1/README.md @@ -0,0 +1,9 @@ +# Operating Systems Worksheet 1 + +## Overview +This repository contains my solutions for Worksheet 1 of the Operating Systems module. The tasks include: +- Basic assembler programming. +- Translating C loops into assembler. +- Using Makefiles to automate builds. + +## Repository Structure diff --git a/worksheet_1/makefile b/worksheet_1/makefile new file mode 100644 index 0000000..1a1f431 --- /dev/null +++ b/worksheet_1/makefile @@ -0,0 +1,28 @@ +all: task1 task2 task3 task4 + +task1: src/task1.asm src/asm_io.asm src/driver.c + nasm -f elf src/task1.asm -o src/task1.o + nasm -f elf src/asm_io.asm -o src/asm_io.o + gcc -m32 -c src/driver.c -o src/driver.o + gcc -m32 src/task1.o src/asm_io.o src/driver.o -o task1 + +task2: src/task2.asm src/asm_io.asm src/driver.c + nasm -f elf src/task2.asm -o src/task2.o + nasm -f elf src/asm_io.asm -o src/asm_io.o + gcc -m32 -c src/driver.c -o src/driver.o + gcc -m32 src/task2.o src/asm_io.o src/driver.o -o task2 + +task3: src/task3.asm src/asm_io.asm src/driver.c + nasm -f elf src/task3.asm -o src/task3.o + nasm -f elf src/asm_io.asm -o src/asm_io.o + gcc -m32 -c src/driver.c -o src/driver.o + gcc -m32 src/task3.o src/asm_io.o src/driver.o -o task3 + +task4: src/task4.asm src/asm_io.asm src/driver.c + nasm -f elf src/task4.asm -o src/task4.o + nasm -f elf src/asm_io.asm -o src/asm_io.o + gcc -m32 -c src/driver.c -o src/driver.o + gcc -m32 src/task4.o src/asm_io.o src/driver.o -o task4 + +clean: + rm -f task1 task2 task3 task4 src/*.o diff --git a/worksheet_1/src/asm_io.asm b/worksheet_1/src/asm_io.asm new file mode 100644 index 0000000..2e6e666 --- /dev/null +++ b/worksheet_1/src/asm_io.asm @@ -0,0 +1,26 @@ +; +; file: asm_io.asm +; Assembly I/O routines +; To assemble for DJGPP +; nasm -f coff -d COFF_TYPE asm_io.asm +; To assemble for Borland C++ 5.x +; nasm -f obj -d OBJ_TYPE asm_io.asm +; To assemble for Microsoft Visual Studio +; nasm -f win32 -d COFF_TYPE asm_io.asm +; To assemble for Linux +; nasm -f elf -d ELF_TYPE asm_io.asm +; To assemble for Watcom +; nasm -f obj -d OBJ_TYPE -d WATCOM asm_io.asm +; IMPORTANT NOTES FOR WATCOM +; The Watcom compiler's C library does not use the +; standard C calling convention. For example, the +; putchar() function gets its argument from the +; the value of EAX, not the stack. + + +%define NL 10 +%define CF_MASK 00000001h +%define PF_MASK 00000004h +%define AF_MASK 00000010h +%define ZF_MASK 00000040h +%define SF_MASK 00000080h \ No newline at end of file diff --git a/worksheet_1/src/asm_io.inc b/worksheet_1/src/asm_io.inc new file mode 100644 index 0000000..9163be3 --- /dev/null +++ b/worksheet_1/src/asm_io.inc @@ -0,0 +1,30 @@ + extern read_int, print_int, print_string + extern read_char, print_char, print_nl + extern sub_dump_regs, sub_dump_mem, sub_dump_math, sub_dump_stack + +%macro dump_regs 1 + push dword %1 + call sub_dump_regs +%endmacro + + +; +; usage: dump_mem label, start-address, # paragraphs +%macro dump_mem 3 + push dword %1 + push dword %2 + push dword %3 + call sub_dump_mem +%endmacro + +%macro dump_math 1 + push dword %1 + call sub_dump_math +%endmacro + +%macro dump_stack 3 + push dword %3 + push dword %2 + push dword %1 + call sub_dump_stack +%endmacro \ No newline at end of file diff --git a/worksheet_1/src/asm_io.o b/worksheet_1/src/asm_io.o new file mode 100644 index 0000000000000000000000000000000000000000..d75ea1f27158915097669a9fe1672cfa3c2e56e7 GIT binary patch literal 304 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpH?P-MY^L=hk}nUPdJU|?X7M&g6yL0oPI z1_mY&1BMwH7!(*77(jYK;w%gd3<3-c48l+`m@)-Mh&YT7Gmk;9IHS0vs3b9oL9e(n l7eYh$Fr_FoTpt4i0}I2){|v=N$@+=Kx$&9#dWprk3;^=O6ZZfB literal 0 HcmV?d00001 diff --git a/worksheet_1/src/driver.c b/worksheet_1/src/driver.c new file mode 100644 index 0000000..d386c74 --- /dev/null +++ b/worksheet_1/src/driver.c @@ -0,0 +1,7 @@ +int __attribute__((cdecl)) asm_main(void); + +int main() { + int ret_status; + ret_status = asm_main(); + return ret_status; +} diff --git a/worksheet_1/src/driver.o b/worksheet_1/src/driver.o new file mode 100644 index 0000000000000000000000000000000000000000..964d1066906062baddae6f1a5a2c83c8b9222b7e GIT binary patch literal 572 zcmX^2>+L^w1_lOZ1_lO31_lNe1_p)}5JLgV2eBD2K?VZ@!vaPI1`rL>55gcbKq}+o zOHwOJKr9H3j}LK;2!XI+q%2fF$UY7xh+PaU3=J^(`1s`f+=9g9lK9fR^31%H_;?=| zm>h^!U|?VnVPIf5z{tSB#K6EH05b!^1u0>Ok5A2rPb*5yO$Boq(A{Cez`y{)SD<D< zR537cL%ap%8Zj_1NI=7efq{<!f+3cG#3h&@Yy&0+1|9~mUWNd$P6Po8LKsGf62}Vd zeA@hm<GAY|kn$Jr{{R2q>H4GF^+)p&j@ZK>F$M+(P*}p92n`pI6k}Bo17i&bqW}*p zO9vywA2JLK3~T=X{}0yV$j8yb<irb#1CY-c85nrM`WP5kSQ!`?_(6__8VqGJFvKSo N=f>wIX67+40028|IOqTX literal 0 HcmV?d00001 diff --git a/worksheet_1/src/task1.asm b/worksheet_1/src/task1.asm new file mode 100644 index 0000000..0442b2c --- /dev/null +++ b/worksheet_1/src/task1.asm @@ -0,0 +1,17 @@ +section .data + num1 dd 10 + num2 dd 20 + result dd 0 + +section .text + global asm_main + extern print_int + +asm_main: + mov eax, [num1] + add eax, [num2] + mov [result], eax + push eax + call print_int + add esp, 4 + ret diff --git a/worksheet_1/src/task1.o b/worksheet_1/src/task1.o new file mode 100644 index 0000000000000000000000000000000000000000..16322411018601cd7b758cef60386d91406c0583 GIT binary patch literal 704 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpJY8JNK=QVEcmAPm!;z{tSBgJcK`l+Dh- z0JfhE$}eDKV32~cL6iW9U|?Y2Wne&Y$pl6Q21BSEhyvLKqQw~)7??l|D89hRz%YS< zfq|8QfdOO}$X<|{@@VEIFflL~L-l|tn0e|93=Etg0VrO;#K54yz`y`92V@V3=77q9 zC@uyD1`!YgiWh=tW>%20#UOP7FaG@h|G)VN%VCfN0|SFzN@7VOgI-B$MG1pmaYk`T zQAuJFgI;lEE`)~ii&AqSYM|P1Q80Id<XIR#{s+-8j2hFR@ML1(he?8IMzGsKjs<fW z7#SoP7#KkAhVemuhp-tKK;ftb<1m2uObiUgMalXliN)E5dWprk40)xwh9JU-p(wSu vG^d22peQr1BtA2*gdwpwH$FEpGY`oCXj))og2WYw2BjGgEd+{Jb_NCje!w)V literal 0 HcmV?d00001 diff --git a/worksheet_1/src/task2.asm b/worksheet_1/src/task2.asm new file mode 100644 index 0000000..a2eea57 --- /dev/null +++ b/worksheet_1/src/task2.asm @@ -0,0 +1,53 @@ +section .bss + name resb 32 + count resd 1 + +section .text + global asm_main + extern print_string, print_int, read_int, read_string + +asm_main: + ; Prompt for name + push message_name + call print_string + add esp, 4 + + push name + call read_string + add esp, 4 + + ; Prompt for count + push message_count + call print_string + add esp, 4 + + push count + call read_int + add esp, 4 + + ; Validate count + mov eax, [count] + cmp eax, 50 + jl invalid + cmp eax, 100 + jg invalid + + ; Print welcome message +print_loop: + push name + call print_string + add esp, 4 + dec eax + jnz print_loop + ret + +invalid: + push error_message + call print_string + add esp, 4 + ret + +section .data + message_name db "Enter your name: ", 0 + message_count db "Enter a number (50-100): ", 0 + error_message db "Invalid input!", 0 diff --git a/worksheet_1/src/task3.asm b/worksheet_1/src/task3.asm new file mode 100644 index 0000000..91d006b --- /dev/null +++ b/worksheet_1/src/task3.asm @@ -0,0 +1,23 @@ +section .data + array dd 1, 2, 3, ..., 100 ; Replace ... with remaining numbers + sum dd 0 + +section .text + global asm_main + extern print_int + +asm_main: + mov ecx, 100 ; Counter for 100 elements + mov esi, array ; Start of the array + xor eax, eax ; Accumulator + +sum_loop: + add eax, [esi] + add esi, 4 ; Move to the next integer + loop sum_loop + + mov [sum], eax + push eax + call print_int + add esp, 4 + ret diff --git a/worksheet_1/src/task4.asm b/worksheet_1/src/task4.asm new file mode 100644 index 0000000..a7facb2 --- /dev/null +++ b/worksheet_1/src/task4.asm @@ -0,0 +1,66 @@ +section .bss + start resd 1 + end resd 1 + +section .data + array dd 1, 2, 3, ..., 100 ; Replace ... with remaining numbers + sum dd 0 + +section .text + global asm_main + extern print_int, read_int, print_string + +asm_main: + ; Prompt for range + push message_start + call print_string + add esp, 4 + push start + call read_int + add esp, 4 + + push message_end + call print_string + add esp, 4 + push end + call read_int + add esp, 4 + + ; Validate range + mov eax, [start] + cmp eax, 1 + jl invalid + mov ebx, [end] + cmp ebx, 100 + jg invalid + cmp eax, ebx + jg invalid + + ; Calculate sum + xor ecx, ecx + mov esi, array + sub eax, 1 + add esi, eax * 4 ; Adjust start index + mov ecx, ebx + sub ecx, eax ; Range length + +sum_range: + add eax, [esi] + add esi, 4 + loop sum_range + + push eax + call print_int + add esp, 4 + ret + +invalid: + push error_message + call print_string + add esp, 4 + ret + +section .data + message_start db "Enter start of range (1-100): ", 0 + message_end db "Enter end of range (1-100): ", 0 + error_message db "Invalid range!", 0 -- GitLab