4.4. x64

4.4.1. 常用寄存器

  • RAX
    • 易失的

    • 返回值寄存器

  • RCX
    • 易失的

    • 第一个整型参数

  • RDX
    • 易失的

    • 第二个整型参数

    • 系统调用的第三个参数

  • R8
    • 易失的

    • 第三个整型参数

  • R9
    • 易失的

    • 第四个整型参数

  • RDI
    • 非易失的

    • 必须由被调用方保留

    • 系统调用的第一个参数

  • RSI
    • 非易失的

    • 必须由被调用方保留

    • 系统调用的第二个参数

  • RBX
    • 非易失的

    • 必须由被调用方保留

  • RBP
    • 非易失的

    • 可用作帧指针;必须由被调用方保留

  • RSP
    • 非易失的

    • 堆栈指针

  • R8
    • 系统调用的第五个参数

  • R9
    • 系统调用的第六个参数

  • R10-R11
    • 易失的

    • 必须根据需要由调用方保留

    • 在 syscall/sysret 指令中使用

    • R10为系统调用的第四个参数

  • R12-R15
    • 非易失的

    • 必须由被调用方保留

4.4.2. 系统调用号

需要注意的是,x86和x64架构下系统调用号并不相同。系统调用可在 /usr/include/asm/unistd.h 文件中查看。