Add printf() comment, return length of printed message

This commit is contained in:
2025-06-25 13:56:30 +02:00
parent d0769f6ffc
commit 1e095bec77
2 changed files with 8 additions and 0 deletions

View File

@ -46,6 +46,8 @@ puts:
leave leave
ret ret
;----- printf(const char* string, ...) -----; ;----- printf(const char* string, ...) -----;
; Currently only supports specifiers: %d, %c, %s
; Return value: Amount of printed characters
printf: printf:
push rbp push rbp
mov rbp, rsp mov rbp, rsp
@ -213,6 +215,8 @@ printf:
mov byte [r11], 0x0 mov byte [r11], 0x0
lea rdi, [rel printfBuff] lea rdi, [rel printfBuff]
call print call print
lea rdi, [rel printfBuff]
call strlen
pop r13 pop r13
pop r12 pop r12

View File

@ -83,6 +83,7 @@ section .rodata
msgPrintf db NL,"# printf()",EOS msgPrintf db NL,"# printf()",EOS
msgPrintf1 db "TEST printf()",NL,EOS msgPrintf1 db "TEST printf()",NL,EOS
msgPrintf2 db "TEST printf(testStr, tS1, tS2, tS3, tS4, tS5, tS6, tS7, tS8, num1, tS9)",NL,EOS msgPrintf2 db "TEST printf(testStr, tS1, tS2, tS3, tS4, tS5, tS6, tS7, tS8, num1, tS9)",NL,EOS
msgPrintf2b db "Return value: %d",NL,EOS
; min() / minu() ; min() / minu()
msgMin db NL,"# min() / minu()",EOS msgMin db NL,"# min() / minu()",EOS
msgMin1 db "TEST min(num1, num2): %d",NL,EOS msgMin1 db "TEST min(num1, num2): %d",NL,EOS
@ -239,6 +240,9 @@ main:
push tS6 push tS6
call printf call printf
add rsp, 40 ;cleanup stack, 8*5 add rsp, 40 ;cleanup stack, 8*5
mov rsi, rax
lea rdi, [msgPrintf2b]
call printf
%ENDIF %ENDIF
%IF TEST_min %IF TEST_min
lea rdi, [rel msgMin] lea rdi, [rel msgMin]