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:
parent
9e8417b7fb
commit
31a4276fa3
1 changed files with 23 additions and 30 deletions
53
wtfstopw.asm
53
wtfstopw.asm
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue