適用於 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 Assembler ,nasm
,因為此程式碼使用其語法。然後使用以下命令(假設程式碼位於檔案 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