適用於 Linux x86 64 的 Hello world(Intel 64 位)

section .data
    msg db "Hello world!",10      ; 10 is the ASCII code for a new line (LF)

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, 13
    syscall
    
    mov rax, 60
    mov rdi, 0
    syscall

如果要執行此程式,首先需要 Netwide Assemblernasm,因為此程式碼使用其語法。然後使用以下命令(假設程式碼位於檔案 helloworld.asm 中)。它們分別用於組裝,連結和執行。

  • nasm -felf64 helloworld.asm
  • ld helloworld.o -o helloworld
  • ./helloworld

該程式碼使用了 Linux 的 sys_write 系統呼叫。在這裡, 你可以看到 x86_64 架構的所有系統呼叫列表。當你還將寫入退出的手冊頁考慮在內時,你可以將上述程式轉換為 C 語言,它可以執行相同操作並且更具可讀性:

#include <unistd.h>

#define STDOUT 1

int main()
{
    write(STDOUT, "Hello world!\n", 13);
    _exit(0);
}

這裡只需要兩個命令來進行編譯和連結(第一個)和執行:

  • gcc helloworld_c.c -o helloworld_c
  • ./helloworld_c