hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/utils/parse.asm
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-06 04:12:25 +0200
committerhachem <im@hachem.wtf>2026-09-06 04:12:25 +0200
commit054d372a716bca4f628674e524e3d027f6824019 (patch)
treef1b8a86430476b4aed8173857bdab0f960e5fdb1 /utils/parse.asm
parent78c4d3d06d8e863cfe2489281ccfe206544cbd7f (diff)
refactor: clean up repository layout
Diffstat (limited to 'utils/parse.asm')
-rw-r--r--utils/parse.asm22
1 files changed, 22 insertions, 0 deletions
diff --git a/utils/parse.asm b/utils/parse.asm
new file mode 100644
index 0000000..833cb4e
--- /dev/null
+++ b/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