From aa86683b3538c550c5c4be167c0eee4c77c0b7ec Mon Sep 17 00:00:00 2001 From: PoliEcho Date: Mon, 7 Jul 2025 11:37:59 +0200 Subject: [PATCH] inital-commit --- .gitignore | 1 + Makefile | 29 +++++++++++++++++++++++++++++ src/main.asm | 3 +++ src/str.asm | 24 ++++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 src/main.asm create mode 100644 src/str.asm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d964e87 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.asm-lsp.toml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ff49756 --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +NASM = nasm +LD = ld + +NASM_FLAGS := -felf64 +LD_FLAGS := --strip-all + +SRC_PATH := src +OBJ_PATH := build/obj +BIN_PATH := build/bin + +SRC_FILES := $(wildcard $(SRC_PATH)/*.asm) +OBJ_FILES := $(patsubst $(SRC_PATH)/%.asm,$(OBJ_PATH)/%.o,$(SRC_FILES)) + +all: make-build-dir $(BIN_PATH)/asm-game-of-life + +make-build-dir: + mkdir -p $(OBJ_PATH) + mkdir -p $(BIN_PATH) + + +$(BIN_PATH)/asm-game-of-life: $(OBJ_FILES) + $(LD) $(LD_FLAGS) $^ -o $@ + + +$(OBJ_PATH)/%.o: $(SRC_PATH)/%.asm + $(NASM) $(NASM_FLAGS) $< -o $@ + +clean: + rm -fr build diff --git a/src/main.asm b/src/main.asm new file mode 100644 index 0000000..be56ef2 --- /dev/null +++ b/src/main.asm @@ -0,0 +1,3 @@ +section .text +global _start + diff --git a/src/str.asm b/src/str.asm new file mode 100644 index 0000000..90d76c5 --- /dev/null +++ b/src/str.asm @@ -0,0 +1,24 @@ +SYS_WRITE equ 1 +STDOUT equ 1 + + +print_str: ; takes pointer to string in rdi and retuns in rax + push rsi + push rdx + mov rsi, rdi + mov rdx, 0 + +.count_loop: + cmp byte [rsi+rdx], 0 + je .print + inc rdx + jmp .count_loop + +.print: + mov rax, SYS_WRITE + mov rdi, STDOUT + syscall + pop rdx + pop rsi + ret +