x86-64CPU中的寄存器
64位CPU中的寄存器
x86-64CPU中共有16个存储64位值的通用目的寄存器,这些寄存器用来存储整数数据和指针。
64位CPU的前8个寄存器是从32位CPU中的%eax到%esp的8个寄存器,从32位扩展为64位,同时,名称也变为了从%rax到%rsp。
另外的8个寄存器是新增的,标号从%r8到%r15。
标号 | 作用 |
---|---|
%rax | 返回值 |
%rbx | 被调用者保存 |
%rcx | 第4个参数 |
%rdx | 第3个参数 |
%rsi | 第2个参数 |
%rdi | 第1个参数 |
%rbp | 被调用者保存 |
%rsp | 栈指针 |
%r8 | 第5个参数 |
%r9 | 第6个参数 |
%r10 | 调用者保存 |
%r11 | 调用者保存 |
%r12 | 被调用者保存 |
%r13 | 被调用者保存 |
%r14 | 被调用者保存 |
%r15 | 被调用者保存 |
32位CPU中的寄存器
Intel的32位CPU中的8个寄存器是从8086的16位CPU中的8个16位寄存器扩展而来的,寄存器标号从%ax到%sp变为%eax到%esp。
标号 | 作用 |
---|---|
%eax | 返回值 |
%ebx | 被调用者保存 |
%ecx | 第4个参数 |
%edx | 第3个参数 |
%esi | 第2个参数 |
%edi | 第1个参数 |
%ebp | 被调用者保存 |
%esp | 栈指针 |
16位CPU中的寄存器
Intel的16位CPU中有8个16位通用寄存器
标号 | 作用 |
---|---|
%ax | 返回值 |
%bx | 被调用者保存 |
%cx | 第4个参数 |
%dx | 第3个参数 |
%si | 第2个参数 |
%di | 第1个参数 |
%bp | 被调用者保存 |
%sp | 栈指针 |
8位CPU中的寄存器
Intel的8位CPU中8个8位通用寄存器如下所示:
标号 | 作用 |
---|---|
%al | 返回值 |
%bl | 被调用者保存 |
%cl | 第4个参数 |
%dl | 第3个参数 |
%sil | 第2个参数 |
%dil | 第1个参数 |
%bpl | 被调用者保存 |
%spl | 栈指针 |