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