printf() fixes: 1) Relative addresses 2) Stack alignment when calling itoa

This commit is contained in:
2025-07-01 11:11:59 +02:00
parent 20564bb785
commit 0de494bf51

View File

@ -91,11 +91,11 @@ printf:
push r14 ;current index of printfBuff push r14 ;current index of printfBuff
push r15 ;where to return after flush push r15 ;where to return after flush
mov [printfArgs], rsi mov [rel printfArgs], rsi
mov [printfArgs+8], rdx mov [rel printfArgs+8], rdx
mov [printfArgs+16], rcx mov [rel printfArgs+16], rcx
mov [printfArgs+24], r8 mov [rel printfArgs+24], r8
mov [printfArgs+32], r9 mov [rel printfArgs+32], r9
xor r10, r10 xor r10, r10
xor r14, r14 xor r14, r14
@ -147,7 +147,9 @@ printf:
push rdx push rdx
push r8 push r8
push r10 push r10
sub rsp, 8
call itoa call itoa
add rsp, 8
pop r10 pop r10
pop r8 pop r8
pop rdx pop rdx
@ -171,9 +173,9 @@ printf:
mov rdi, qword [rbp + 16 + (r10-5)*8] mov rdi, qword [rbp + 16 + (r10-5)*8]
.charToStr: .charToStr:
mov [printfNBuff], dil mov [rel printfNBuff], dil
mov dil, 0 mov dil, 0
mov [printfNBuff+1], dil mov [rel printfNBuff+1], dil
lea rsi, [rel printfNBuff] lea rsi, [rel printfNBuff]
jmp .insertLoop jmp .insertLoop