Add printf() comment, return length of printed message
This commit is contained in:
@ -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
|
||||||
|
@ -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]
|
||||||
|
Reference in New Issue
Block a user