diff options
| author | hachem <im@hachem.wtf> | 2026-09-06 00:40:37 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-06 00:40:37 +0200 |
| commit | 78c4d3d06d8e863cfe2489281ccfe206544cbd7f (patch) | |
| tree | 8635d19a9f52210f03edf87cb77365a981cc7029 /aoc-2025/utils/parse.asm | |
| parent | 42b942404eef0c2af3fc1ec88414793cc6b940a3 (diff) | |
fix: add utilities
Diffstat (limited to 'aoc-2025/utils/parse.asm')
| -rw-r--r-- | aoc-2025/utils/parse.asm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/aoc-2025/utils/parse.asm b/aoc-2025/utils/parse.asm new file mode 100644 index 0000000..833cb4e --- /dev/null +++ b/aoc-2025/utils/parse.asm @@ -0,0 +1,22 @@ +; utils/parse.asm - decimal parsing helper. + +section .text + +; parse_u64: read decimal digits at [RSI] into RAX, advancing RSI past them. +; Stops on the first non-digit. Clobbers RAX, RDX. +parse_u64: + xor rax, rax +.digit: + 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 .digit +.done: + ret |
