NOTE
寄存器
x86-64 寄存器学习笔记,包括通用寄存器、RIP、段寄存器与栈相关寄存器。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 寄存器是什么
CPU内部的存储单元 用于存放从内存读取而来的数据(包括指令)和CPU运算的中间结果 缓存.md
2. 为什么需要寄存器
CPU读写寄存器的速度比读写内存的速度快得多
3. 寄存器分类
不同体系结构的CPU,其内部寄存器的数量、种类以及名称不一样,以AMD64体系为例
3.1. 通用寄存器
- rax, rbx, rcx, rdx, rsi, rdi, rbp, rsp, r8, r9, r10, r11, r12, r13, r14, r15寄存器
- rsp和rbp两个寄存器都跟函数调用栈有关
- rsp寄存器一般用来存放函数调用栈的栈顶地址,
- rbp寄存器在使用帧指针时通常用来标识函数栈帧的基准位置。
- 举例参考进程.md
- rsp和rbp两个寄存器都跟函数调用栈有关
- 主要用于临时存放数据
- 64bit,也可用作32/16/8bit

3.2. 程序计数寄存器(也叫PC寄存器)
- rip寄存器
- 它用来保存指令指针,即下一条将要执行的指令地址
- 64bit
3.3. 段寄存器
- fs和gs寄存器
- 在x86-64系统中常被操作系统用于实现线程本地存储(TLS)等功能
- FS/GS 段选择子本身是16bit;x86-64 中实际用于地址计算的 FS/GS base 可以是64bit
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看