From 78c4d3d06d8e863cfe2489281ccfe206544cbd7f Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 6 Sep 2026 00:40:37 +0200 Subject: fix: add utilities --- aoc-2025/day2.asm | 94 +++---------------------------------------------------- 1 file changed, 4 insertions(+), 90 deletions(-) (limited to 'aoc-2025/day2.asm') diff --git a/aoc-2025/day2.asm b/aoc-2025/day2.asm index c1ae232..987fbf9 100644 --- a/aoc-2025/day2.asm +++ b/aoc-2025/day2.asm @@ -5,18 +5,11 @@ default rel global _start -%define SYS_EXIT 60 -%define SYS_READ 0 -%define SYS_WRITE 1 -%define SYS_OPEN 2 -%define SYS_CLOSE 3 - -%define O_RDONLY 0 -%define STDOUT 1 +%include "utils/io.asm" +%include "utils/parse.asm" section .data input_path db "input/day2.txt", 0 - newline db 10 label1 db "Part 1: ", 0 label2 db "Part 2: ", 0 @@ -29,8 +22,6 @@ section .bss sum1 resq 1 sum2 resq 1 - number_buffer resb 32 ; for printing and number_to_string - section .text _start: @@ -139,7 +130,7 @@ print_results: handle_line: next_range: ; parse start - call parse_int64 + call parse_u64 mov r13, rax cmp byte [rsi], '-' @@ -147,7 +138,7 @@ next_range: inc rsi ; parse end - call parse_int64 + call parse_u64 mov r14, rax range_loop: @@ -186,26 +177,6 @@ after_range: done_line: ret -; RSI points at decimal digits; stops on first non-digit -parse_int64: - xor rax, rax -.parse: - mov dl, [rsi] - cmp dl, '0' - jl .done - cmp dl, '9' - jg .done - - sub dl, '0' - movzx rdx, dl - imul rax, rax, 10 - add rax, rdx - - inc rsi - jmp .parse -.done: - ret - ; number_to_string: convert RAX to decimal ASCII, MSB-first ; Output: ; RSI = pointer to first digit @@ -351,60 +322,3 @@ check_invalid2: pop rdx pop rbx ret - -print_newline: - mov rax, SYS_WRITE - mov rdi, STDOUT - mov rsi, newline - mov rdx, 1 - syscall - ret - -print_int64: - mov rdi, number_buffer+31 - mov byte [rdi], 0 - dec rdi - - cmp rax, 0 - jne .conv - - mov byte [rdi], '0' - jmp .done -.conv: - mov rbx, 10 -.next: - xor rdx, rdx - div rbx - add dl, '0' - mov [rdi], dl - dec rdi - test rax, rax - jnz .next - - inc rdi -.done: - mov rax, SYS_WRITE - mov rsi, rdi - mov rdi, STDOUT - mov rdx, number_buffer+31 - sub rdx, rsi - syscall - ret - -print_string: - push rcx - push rdx - mov rdx, 0 -.length: - cmp byte [rcx+rdx], 0 - je .submit - inc rdx - jmp .length -.submit: - mov rax, SYS_WRITE - mov rdi, STDOUT - mov rsi, rcx - syscall - pop rdx - pop rcx - ret -- cgit v1.3