适用于 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