x86-64处理器的16个通用寄存器
寄存器名 | 寄存器简介 | 主要功能 | 63-0 | 31-0 | 15-0 | 8-0 |
---|---|---|---|---|---|---|
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 | 调用者保存 | r10 | r10d | r10w | r10b | |
r11 | 调用者保存 | r11 | r11d | r11w | r11b | |
r12 | 被调用者保存 | r12 | r12d | r12w | r12b | |
r13 | 被调用者保存 | r13 | r13d | r13w | r13b | |
r14 | 被调用者保存 | r14 | r14d | r14w | r14b | |
r15 | 被调用者保存 | r15 | r15d | r15w | r15b |
段寄存器
寄存器 | 功能 |
---|---|
CS(code segment) | 代码段地址寄存器,存放代码段的起始地址 |
DS(data segment) | 数据段地址寄存器,存放数据段的起始地址 |
SS(stack segment) | 堆栈段地址寄存器,存放堆栈段的起始地址 |
ES(extra segment) | 附加段地址寄存器,存放附加段的起始地址 |
控制寄存器
IP(Instruction Pointer):指令指针寄存器,存放代码段中指令的偏移地址。
FR(Flags Register):标志寄存器,用于存放反映处理器和运行程序执行结果状态的控制标志和条件码标志。