format ELF64 executable 0 segment readable executable entry $ ; read from stdin xor rax, rax ; is rax and rax equal to itself? yes? rax is set to 0 (for sys_read) xor rdi, rdi ; same thing but rdi (for stdin) mov rsi, buf ; direct addressing - move address of buf to rsi (buffer address) mov rdx, 80 ; buffer size syscall ; write to stdout mov rax, 1 ; sys_write mov rdi, 1 ; stdout mov rdx, 80 syscall ; exit program xor rdi, rdi ; exit code 0 mov rax, 60 ; sys_exit syscall segment readable writable buf rb 80