Factorisation + enhancement in proc_print_time

Writing a proc_nl function to print a newline on a given fd
Enhancement in argument passing to proc_print_time
This commit is contained in:
Yann Weber 2018-09-08 14:32:42 +02:00
commit 31a4276fa3

View file

@ -187,8 +187,8 @@ setsleep_endloop:
mov [ts_sleep.tv_nsec], rax
main_loop:
push 2 ; stderr
push 0x0D ; \r
mov rax, 2 ; stderr
mov rdi, 0xD ; \r
call proc_print_time
; Attempt to read from stdin
@ -240,11 +240,8 @@ exit:
pop rdi ; return code
syscall
fault:
mov rax, 1 ; write
mov rdi, 2 ; stderr
mov rsi, nl
mov rdx, 1
syscall
call proc_nl
mov rax, 1
mov rsi, faultmsg
mov rdx, faultmsglen
@ -254,11 +251,8 @@ fault:
jmp exit
newline_exit:
mov rax, 1
mov rdi, 1
mov rsi, nl
mov rdx, 1
syscall
call proc_nl
mov rdi, 0 ; exit OK
jmp exit
@ -266,15 +260,12 @@ newline_exit:
;
; Print current time on FD and add a leading char CHR
; push FD & push CHR to set arguments
; rax the FS & rdi the leading CHR
;
proc_print_time:
; push ret addr before arguments
pop r8
pop r9
pop r10
push r8
push r10
push r9
push rax
push rdi
; updating ts_cur time
mov rax, 228 ; clock_gettime
@ -284,17 +275,14 @@ proc_print_time:
; Calculating elapsed ns
mov rax, [ts_cur.tv_nsec]
mov rbx, [ts_start.tv_nsec]
sub rax, rbx
sub rax, [ts_start.tv_nsec]
cmp rax, 0
jge print_time_us_cont
; negativ result
add rax, 1000000000
mov rbx, [ts_cur.tv_sec]
sub rbx, 1
mov [ts_cur.tv_sec], rbx
sub qword [ts_cur.tv_sec], 1
print_time_us_cont:
; Divide result given time_res
mov r10, rax
mov rax, 1000000000
@ -459,8 +447,8 @@ proc_lap_handler:
mov rdx, 3 ; " : "
syscall
push 1 ; stdout
push 0x0A ; \n
mov rax, 1 ; stdout
mov rdi, 0xA ; \n
call proc_print_time
ret
@ -550,11 +538,8 @@ arg_strerr:
call proc_strlen
mov rax, 1
syscall
mov rax, 1
mov rsi, nl
mov rdx, 1
syscall
syscall
call proc_nl
call proc_nl
jmp arg_err
;
@ -600,4 +585,12 @@ proc_strlen:
mov rdx, r9
ret
; with rdi the fd
proc_nl:
mov rax, 1
mov rsi, nl
mov rdx, 1
syscall
ret
.end: