Assembly适用于 Linux x86_64(Intel 64 位)的 Hello world

例子

section .data
    msg db "你好世界!",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

  • ldhelloworld.o-o helloworld

  • ./helloworld


该代码利用了 Linux 的sys_write系统调用。在这里您可以看到 x86_64 架构的所有系统调用列表。当您还考虑writeexit的手册页时,您可以将上述程序转换为 C 程序,该程序具有相同的功能并且更具可读性:

#include <unistd.h>

#define STDOUT 1

int main()
{
    write(STDOUT, "你好世界!\n", 13);
    _exit(0);
}

这里只需要两个命令来编译和链接(第一个)并执行:

  • gcc helloworld_c.c -o helloworld_c.

  • ./helloworld_c