Ignore invalid specifiers in printf()
This commit is contained in:
@ -77,6 +77,11 @@ printf:
|
||||
je .rep_c
|
||||
cmp byte [rdi+1], 's'
|
||||
je .rep_s
|
||||
|
||||
;--- invalid specifier ---;
|
||||
mov byte [r11], '%'
|
||||
inc r10 ;assuming args were passed for invalid specifiers !
|
||||
jmp .continue
|
||||
|
||||
;--- %d ---;
|
||||
.rep_d:
|
||||
|
15
tests.asm
15
tests.asm
@ -70,7 +70,7 @@ section .rodata
|
||||
msgPuts db NL,NL,"# puts()",NL,EOS
|
||||
msgPuts1 db "puts() test",EOS
|
||||
; printf()
|
||||
testStr db "Testing: %s, %%, %s, %s, %s, %s, %s, %s, %s, %d, %s",NL,EOS
|
||||
testStr db "Testing: %s, %%, %s, %s, %f, %s, %d, %s, %s, %x, %s, %s, %d, %s",NL,EOS
|
||||
tS1 db "one",EOS
|
||||
tS2 db "two",EOS
|
||||
tS3 db "three",EOS
|
||||
@ -82,7 +82,7 @@ section .rodata
|
||||
tS9 db "noin",EOS
|
||||
msgPrintf db NL,"# printf()",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, invalid1, tS4, num4, tS5, tS6, invalid2, tS7, tS8, num1, tS9)",NL,EOS
|
||||
msgPrintf2b db "Return value: %d",NL,EOS
|
||||
; min() / minu()
|
||||
msgMin db NL,"# min() / minu()",EOS
|
||||
@ -223,7 +223,7 @@ main:
|
||||
lea rdi, [rel msgPrintf1]
|
||||
call printf
|
||||
|
||||
; TEST: printf(testStr, tS1, tS2, tS3, tS4, tS5, tS6, tS7, tS8, num1, tS9)
|
||||
; TEST printf(testStr, tS1, tS2, tS3, invalid1, tS4, num4, tS5, tS6, invalid2, tS7, tS8, num1, tS9)
|
||||
lea rdi, [rel msgPrintf2]
|
||||
call printf
|
||||
|
||||
@ -231,15 +231,18 @@ main:
|
||||
lea rsi, [rel tS1]
|
||||
lea rdx, [rel tS2]
|
||||
lea rcx, [rel tS3]
|
||||
lea r8, [rel tS4]
|
||||
lea r9, [rel tS5]
|
||||
mov r8, 0
|
||||
lea r9, [rel tS4]
|
||||
push tS9
|
||||
push qword [rel num1]
|
||||
push tS8
|
||||
push tS7
|
||||
push 0
|
||||
push tS6
|
||||
push tS5
|
||||
push qword [num4]
|
||||
call printf
|
||||
add rsp, 40 ;cleanup stack, 8*5
|
||||
add rsp, 8*8
|
||||
mov rsi, rax
|
||||
lea rdi, [msgPrintf2b]
|
||||
call printf
|
||||
|
Reference in New Issue
Block a user