First commit for asm implementation

This commit is contained in:
Yann Weber 2018-08-21 07:48:37 +02:00
commit eafb19672c

134
wtfstopw.asm Normal file
View file

@ -0,0 +1,134 @@
[bits 64]
section .text
global _start
_start:
; set stdin non blocking
mov rax, 72 ; fcntl
mov rdi, 0 ; stdin
mov rsi, 3 ; F_GETFL
mov rdx, 0
syscall
mov rdx, rax
or rdx, 4 ; O_NONBLOCK
mov rax, 72 ; fcntl
mov rdi, 0 ; stdin
mov rsi, 4 ; F_SETFL
syscall
mov rax, 228 ; clock_gettime
mov rdi, 0 ; CLOCK_REALTIME
mov rsi, ts_start
syscall
print_time:
mov rax, 228 ; clock_gettime
mov rdi, 0 ; CLOCK_REALTIME
mov rsi, ts_cur
syscall
mov rax, [tv_cur_s]
mov rbx, [tv_start_s]
sub rax, rbx
fifoo:
add al, 0x30
mov byte [msg], al
;xor rax, rax
;mov al, byte [msg]
;mov rdi, [tv_cur_s]
;mov rdx, [tv_start_s]
;sub rdi, rdx
;fifoo:
;add rax, rdi
;mov byte [msg], al
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msglen
syscall
sleep:
mov rax, 35
mov rdi, ts_sleep
mov rsi, 0
syscall
jmp print_time
mov rax, 60 ; sys_exit
mov rdi, 0 ; 0
syscall
dumprax:
push rax
loopdump:
push rax
mov rbx, rax
and rbx, 0x0F
cmp bl, 0xA
jge hexdigit
add bl, 0x30
jmp loopcont
hexdigit:
sub bl, 10
add bl, 0x41
loopcont:
dbg:
mov byte [digit], bl
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
pop rax
mov rdi, 10
xor rdx, rdx
mov rsi, rax
div rdi
cmp rax, 10
jge loopdump
mov al, 10
mov al, [digit]
mov rax, 1
mov rdi, 1
mov rsi, nl
mov rdx, 1
syscall
pop rax
ret
section .data
foobar: ISTRUC timespec
ts_start:
tv_start_s dq 0
tv_start_us dq 0
msg: db "0 Hello, world!", 10
msglen: equ $ - msg
digit: db "0"
nl: db 10
ts_cur:
tv_cur_s dq 0
tv_cur_us dq 0
;ts_sleep:
; tv_sleep_s dd 0,0
; tv_sleep_us dd 10000000,0
; 1/2s sleep
ts_sleep:
tv_sleep_s dq 0
tv_sleep_us dq 500000000
.end: