format ELF64 executable segment readable executable STDERR = 2 STDOUT = 1 macro socket domain, type, protocol { mov rax, 41 mov rdi, domain mov rsi, type mov rdx, protocol syscall } macro write fd, buf, count { mov rax, 1 mov rdi, fd mov rsi, buf mov rdx, count syscall } macro exit ecode { mov rax, 60 ; exit() mov rdi, ecode syscall } entry main main: write STDOUT, msg, mlen socket 2, 1, 0 ; socket(domain, type, protocol) write STDOUT, scm, scml cmp rax, 0 jl error write STDOUT, ssm, ssmlen ; write(fd, buf, count) exit 0 error: write STDERR, emsg, emlen exit 1 ; exit(error_code) segment readable executable msg db "INFO: Starting the Web Server...", 10 mlen = $-msg scm db "INFO: Creating a socket...", 10 scml = $-scm emsg db "ERROR: socket() got invalid arguments", 10 emlen = $-emsg ssm db "INFO: socket creation successful", 10 ssmlen = $-ssmlen