跳转至

寄存器

1 x86-64 处理器的 16 个通用寄存器

寄存器 简介 主要功能 64 位 32 位 16 位 8 位
rax 累加器,是算术运算的主要寄存器 存储返回值 rax eax ax al
rbx 基址寄存器,被调用者保存 存放存储区的起始地址 rbx ebx bx bl
rcx 计数寄存器 循环操作和字串处理的计数控制;函数调用时的第4个参数 rcx ecx cx cl
rdx I/O指针 I/O操作时提供外部设备接口的端口地址;函数调用时的第3个参数 rdx edx dx dl
rsi (source index)源变址寄存器,与rds段寄存器联用,可以访问数据段中的任一个存储单元 函数调用时的第2个参数 rsi esi si sil
rdi (destination index)目的变址寄存器,与res段寄存器联用,可以访问附加段中的任一个存储单元 函数调用时的第1个参数 rdi edi di dil
rbp (base pointer) 基址指针寄存器,用于提供堆栈内某个单元的偏移地址,与 rss 段寄存器联用,可以访问堆栈中的任一个存储单元,被调用者保存 rbp ebp bp bpl
rsp (stack pointer) 栈顶指针寄存器,提供堆栈栈顶单元的偏移地址,与 rss 段寄存器联用,以控制数据进栈和出栈 rsp esp sp spl
r8 函数调用时的第5个参数 r8 r8d r8w r8b
r9 函数调用时的第6个参数 r9 r9d r9w r9b
r10~r15 被调用者保存

2 控制寄存器

寄存器 简介 主要功能
rip (Instruction Pointer)指令指针寄存器,存放代码段中指令的偏移地址
FR (Flags Register)标志寄存器,用于存放反映处理器和运行程序执行结果状态的控制标志和条件码标志 例如可以查看cmp的结果

3 段寄存器

寄存器 简介
CS (code segment)代码段地址寄存器,存放代码段的起始地址
DS (data segment)数据段地址寄存器,存放数据段的起始地址
SS (stack segment)堆栈段地址寄存器,存放堆栈段的起始地址
ES (extra segment)附加段地址寄存器,存放附加段的起始地址