x86-64處理器的16個通用寄存器
| 寄存器名 | 寄存器簡介 | 主要功能 | 63-0 | 31-0 | 15-0 | 8-0 |
|---|---|---|---|---|---|---|
| rax | 累加器,是算術(shù)運算的主要寄存器 | 存儲返回值 | rax | eax | ax | al |
| rbx | 基址寄存器,被調(diào)用者保存 | 存放存儲區(qū)的起始地址 | rbx | ebx | bx | bl |
| rcx | 計數(shù)寄存器 | 循環(huán)操作和字串處理的計數(shù)控制;函數(shù)調(diào)用時的第4個參數(shù) | rcx | ecx | cx | cl |
| rdx | I/O指針 | I/O操作時提供外部設(shè)備接口的端口地址;函數(shù)調(diào)用時的第3個參數(shù) | rdx | edx | dx | dl |
| rsi | (source index)源變址寄存器,與rds段寄存器聯(lián)用,可以訪問數(shù)據(jù)段中的任一個存儲單元 | 函數(shù)調(diào)用時的第2個參數(shù) | rsi | esi | si | sil |
| rdi | (destination index)目的變址寄存器,與res段寄存器聯(lián)用,可以訪問附加段中的任一個存儲單元 | 函數(shù)調(diào)用時的第1個參數(shù) | rdi | edi | di | dil |
| rbp | (base pointer)基址指針寄存器,用于提供堆棧內(nèi)某個單元的偏移地址,與rss段寄存器聯(lián)用,可以訪問堆棧中的任一個存儲單元,被調(diào)用者保存 | rbp | ebp | bp | bpl | |
| rsp | (stack pointer)棧頂指針寄存器,提供堆棧棧頂單元的偏移地址,與rss段寄存器聯(lián)用,以控制數(shù)據(jù)進棧和出棧 | rsp | esp | sp | spl | |
| r8 | 函數(shù)調(diào)用時的第5個參數(shù) | r8 | r8d | r8w | r8b | |
| r9 | 函數(shù)調(diào)用時的第6個參數(shù) | r9 | r9d | r9w | r9b | |
| r10 | 調(diào)用者保存 | r10 | r10d | r10w | r10b | |
| r11 | 調(diào)用者保存 | r11 | r11d | r11w | r11b | |
| r12 | 被調(diào)用者保存 | r12 | r12d | r12w | r12b | |
| r13 | 被調(diào)用者保存 | r13 | r13d | r13w | r13b | |
| r14 | 被調(diào)用者保存 | r14 | r14d | r14w | r14b | |
| r15 | 被調(diào)用者保存 | r15 | r15d | r15w | r15b |
段寄存器
| 寄存器 | 功能 |
|---|---|
| CS(code segment) | 代碼段地址寄存器,存放代碼段的起始地址 |
| DS(data segment) | 數(shù)據(jù)段地址寄存器,存放數(shù)據(jù)段的起始地址 |
| SS(stack segment) | 堆棧段地址寄存器,存放堆棧段的起始地址 |
| ES(extra segment) | 附加段地址寄存器,存放附加段的起始地址 |
控制寄存器
IP(Instruction Pointer):指令指針寄存器,存放代碼段中指令的偏移地址。
FR(Flags Register):標志寄存器,用于存放反映處理器和運行程序執(zhí)行結(jié)果狀態(tài)的控制標志和條件碼標志。