[suweishuai@vmware test]$ arch
x86_64
我在 x86_64 调试 x86_64 上跑的 代码,免不了要跟 x86_64 打交道
调试的时候会遇到 x86_64 的一些寄存器 , 这里 对遇到的寄存器描述一下 , 只考虑 16个通用寄存器+eflags+rip
1.寄存器都是64位的
2.有16个通用寄存器,细分为3类(4数据寄存器、2变址寄存器、2指针寄存器、8通用寄存器)
3.大多数通用寄存器,可以有别名 来 索引 1 2 4 字节
4.有1个指令指针寄存器(RIP) 和 一个标志寄存器(EFLAGS)
- x86_64 下 16个寄存器的 ABI name
序号 | 8字节name | 4字节name | 2字节name | 1字节name | ABI |
---|
0 | rax | eax | ax | ah/al | return value |
1 | rbx | ebx | bx | bh/bl | callee saved |
2 | rcx | ecx | cx | ch/cl | 4th argument |
3 | rdx | edx | dx | dh/dl | 3rd argument |
- | - | - | - | - | - |
4 | rsi | esi | si | sil | 1st argument |
5 | rdi | edi | di | dil | callee saved |
6 | rbp | ebp | bp | bpl | 2nd argument/不是栈帧 |
7 | rsp | esp | sp | spl | stack pointer |
- | - | - | - | - | - |
8 | r8 | r8d | r8w | r8b | 5th argument |
9 | r9 | r9d | r9w | r9b | 6th argument |
10 | r10 | r10d | r10w | r10b | caller saved |
11 | r11 | r11d | r11w | r11b | caller saved |
12 | r12 | r12d | r12w | r12b | caller saved |
13 | r13 | r13d | r13w | r13b | caller saved |
14 | r14 | r14d | r14w | r14b | caller saved |
15 | r15 | r15d | r15w | r15b | caller saved |
序号 | 8字节name | 4字节name | 2字节name |
---|
16 | rflags | eflags | flags |
17 | rip | eip | ip |
CS
DS
ES
FS
GS
SS
描述符
存储器描述符
系统描述符
系统的段描述符
门描述符
描述符表
全局...
中断...
局部...
任务状态段