标签: x64汇编

  • x86-64汇编之Hello world

    1. 环境

    WSL子系统:Ubuntu

    2. 工具

    所需工具包列表:

    程序名称检查命令所需的包
    GUN Assembleras –versionbinutils
    GUN Linkerld –versionbinutils
    GUN Debuggergdb –versiongdb
    Makemake –versionmake

    3. 代码

    代码使用语法风格是:AT&T。

    .global _start
    .section .data
    mystr:
        .string "Hello, world!\n"
    mystrend:
    .section .text
    _start:
        # 设置系统调用号,1 表示write
        movq $1, %rax
        # 标准输出stdout
        movq $1, %rdi
        # 字符串指针
        leaq mystr(%rip), %rsi
        # 字符串长度
        movq $(mystrend-mystr), %rdx
        # 执行系统调用
        syscall
    
        # 设置系统调用号,60 表示exit
        movq $60, %rax
        syscall
    

    4.编译链接并执行

    # 编译
    as helloworld.s -o helloworld.o
    # 链接
    ld helloworld.o -o helloworld
    # 执行,控制台会输出 :Hello, world!
    ./helloworld

    参考资料:

    1. x64架构体系的系统调用列表:https://x64.syscall.sh/