printf() optimization: Use syscall and mov r14 to rax rather than calling print and strlen -- r14 used to contain wrong length: mistakenly increased r14 (and performed checks) for printfNBuff
This commit is contained in:
16
console.asm
16
console.asm
@ -155,14 +155,8 @@ printf:
|
|||||||
|
|
||||||
.charToStr:
|
.charToStr:
|
||||||
mov [printfNBuff], dil
|
mov [printfNBuff], dil
|
||||||
inc r14
|
|
||||||
cmp r14, bufferLength-1
|
|
||||||
je .finish
|
|
||||||
mov dil, 0
|
mov dil, 0
|
||||||
mov [printfNBuff+1], dil
|
mov [printfNBuff+1], dil
|
||||||
inc r14
|
|
||||||
cmp r14, bufferLength-1
|
|
||||||
je .finish
|
|
||||||
lea rsi, [rel printfNBuff]
|
lea rsi, [rel printfNBuff]
|
||||||
jmp .insertLoop
|
jmp .insertLoop
|
||||||
|
|
||||||
@ -210,10 +204,12 @@ printf:
|
|||||||
|
|
||||||
.finish:
|
.finish:
|
||||||
mov byte [r11], 0x0
|
mov byte [r11], 0x0
|
||||||
lea rdi, [rel printfBuff]
|
mov rax, NR_write
|
||||||
call print
|
mov rdi, 1
|
||||||
lea rdi, [rel printfBuff]
|
lea rsi, [rel printfBuff]
|
||||||
call strlen
|
mov rdx, r14
|
||||||
|
syscall
|
||||||
|
mov rax, r14
|
||||||
cmp r14, bufferLength-1
|
cmp r14, bufferLength-1
|
||||||
jl .final
|
jl .final
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user