; time.asm — get current Unix time via sys_time

        global _start

        section .bss
tstamp: resq 1                ; 8 bytes for time_t

        section .data
outbuf: times 21 db 0         ; must be in .data so NASM can do arithmetic

        section .text
_start:
        ; time(&tstamp)
        mov     rax, 201      ; sys_time
        mov     rdi, tstamp
        syscall

        ; convert integer → ASCII
        mov     rbx, rax      ; save timestamp

        mov     rdi, outbuf+20
        mov     byte [rdi], 10
        dec     rdi

.convert:
        xor     rdx, rdx
        mov     rcx, 10
        div     rcx
        add     dl, '0'
        mov     [rdi], dl
        dec     rdi
        test    rax, rax
        jnz     .convert
        inc     rdi

        ; write(1, rdi, outbuf+21 - rdi)
        mov     rax, 1
        mov     rsi, rdi
	mov     rdx, outbuf+21     ; end of buffer
	sub     rdx, rdi           ; rdx = (outbuf+21) - rdi
        mov     rdi, 1
        syscall

        ; exit(0)
        mov     rax, 60
        xor     rdi, rdi
        syscall
