35 lines
517 B
NASM
35 lines
517 B
NASM
format ELF64 executable
|
|
|
|
STDOUT = 1
|
|
HAPPY_EXIT_CODE = 1
|
|
SYSCALL_EXIT = 60
|
|
SYSCALL_WRITE = 1
|
|
|
|
macro print fd, buf, len
|
|
{
|
|
mov rax, SYSCALL_WRITE ; 1 -> write, which takes three arguments (below)
|
|
mov rdi, fd
|
|
mov rsi, buf
|
|
mov rdx, len
|
|
syscall
|
|
}
|
|
|
|
macro exit code
|
|
{
|
|
mov rax, SYSCALL_EXIT
|
|
mov rdi, HAPPY_EXIT_CODE
|
|
syscall
|
|
}
|
|
|
|
segment readable executable
|
|
entry main
|
|
main:
|
|
print STDOUT, msg, msg_len
|
|
exit 1
|
|
|
|
|
|
segment readable writeable
|
|
msg db "Hello, World!", 10
|
|
msg_len db $ - msg
|
|
|