first
This commit is contained in:
49
fasm_with_tsoding/server.asm
Normal file
49
fasm_with_tsoding/server.asm
Normal file
@@ -0,0 +1,49 @@
|
||||
format ELF64 executable
|
||||
|
||||
STDOUT = 1
|
||||
HAPPY_EXIT_CODE = 0
|
||||
SYSCALL_EXIT = 60
|
||||
SYSCALL_WRITE = 1
|
||||
SYSCALL_SOCKET = 41
|
||||
AF_INET = 2
|
||||
SOCK_STREAM = 1
|
||||
|
||||
macro print buf, len
|
||||
{
|
||||
mov rax, SYSCALL_WRITE ; 1 -> write, which takes three arguments (below)
|
||||
mov rdi, STDOUT
|
||||
mov rsi, buf
|
||||
mov rdx, len
|
||||
syscall
|
||||
}
|
||||
|
||||
macro exit code
|
||||
{
|
||||
mov rax, SYSCALL_EXIT
|
||||
mov rdi, code
|
||||
syscall
|
||||
}
|
||||
|
||||
macro socket domain, type, protocol
|
||||
{
|
||||
mov rax, SYSCALL_SOCKET
|
||||
mov rdi, domain
|
||||
mov rsi, type
|
||||
mov rdx, protocol
|
||||
syscall
|
||||
}
|
||||
|
||||
segment readable executable
|
||||
entry main
|
||||
main:
|
||||
print msg, msg_len
|
||||
socket AF_INET, SOCK_STREAM, 0
|
||||
mov dword [socket_fd], eax
|
||||
print [socket_fd], 32
|
||||
exit HAPPY_EXIT_CODE
|
||||
|
||||
|
||||
segment readable writeable
|
||||
msg db "Starting web server!", 10
|
||||
msg_len db $ - msg
|
||||
socket_fd dd 0
|
||||
Reference in New Issue
Block a user