NOTE

寄存器

x86-64 寄存器学习笔记,包括通用寄存器、RIP、段寄存器与栈相关寄存器。

Computer Architecture & Assembly创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

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
  • 主要用于临时存放数据
  • 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

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看