在 Linux 世界中,通常寄存器名称命名如下(我的理解):

    序号 寄存器名称 注释
    0 %rax 累加器
    通畅存储函数调用的返回结果,也被用再idiv(除法)和imul(乘法)命令中。
    1 %rbx 基址寄存器
    base register 用于访问内存的基址
    属于通用寄存器
    2 %rcx 计数寄存器
    3 %rdx 数据寄存器
    属于通用寄存器
    4 %rsi 源变址寄存器
    5 %rdi 目标变址寄存器
    6 %rbp 基址寄存器
    一般用来存放栈底地址, stack frame的开始地址
    7 %rsp 栈顶指针寄存器
    标识当前栈帧的起始位置
    8 %r8
    属于通用寄存器
    9 %r9
    属于通用寄存器
    10 %r10
    属于通用寄存器
    11 %r11
    属于通用寄存器
    12 %r12
    属于通用寄存器
    13 %r13
    属于通用寄存器
    14 %r14
    属于通用寄存器
    15 %r15
    属于通用寄存器

    %rdi %rsi %rdx %rcx %r8 %r9
    当形参数量<7时,参数从左到右放入寄存器:rdi,rsi,rdx,rcx,r8,r9;
    当形参数量>=7时,前6个与上面一样,但后面的顺序依次为”右向左”放入栈中,即和32位汇编一样;