Dump current state of printf() (adding %d support), adds itoa()

This commit is contained in:
2025-06-25 13:07:18 +02:00
parent 1de7731139
commit 4438abda11
3 changed files with 116 additions and 24 deletions

View File

@ -1,3 +1,5 @@
extern strclr
section .text
global min
global minu
@ -7,6 +9,7 @@ section .text
global isupper
global tolower
global toupper
global itoa
;----- min(int a, int b) -----;
; return value: lowest value
@ -120,3 +123,52 @@ toupper:
.quit:
leave
ret
;----- itoa(int num, char* str) -----;
; return value: pointer to str
itoa:
push rbp
mov rbp, rsp
push rsi
push rdi
mov rdi, rsi
call strclr
pop rdi
mov rax, rdi
mov r8, rsi
xor rcx, rcx
test rax, rax
jnz .checkNeg
mov byte [rsi], '0'
mov byte [rsi+1], 0
jmp .quit
.checkNeg:
xor rbx, rbx
test rax, rax
jns .convert
neg rax
mov rbx, 1
.convert:
xor rdx, rdx
mov r10, 10
div r10
add rdx, '0'
push rdx
inc rcx
test rax, rax
jnz .convert
.toString:
pop rdx
mov byte [rsi], dl
inc rsi
loop .toString
.quit:
pop rsi
mov rax, rsi
leave
ret