一口气看完45个寄存器,CPU核心技术大揭秘
序言前段时间 , 我连续写了十来篇CPU底层系列技术故事文章 , 有不少读者私信我让我写一下CPU的寄存器 。
寄存器这个太多太复杂 , 不适合写故事 , 拖了很久 , 总算是写完了 , 这篇文章就来详细聊聊x86/x64架构的CPU中那些纷繁复杂的寄存器们 。
长文预警 , 时速较快 , 请系好安全带~起飞~
文章插图
自1946年冯·诺伊曼领导下诞生的世界上第一台通用电子计算机ENIAC至今 , 计算机技术已经发展了七十多载 。
从当初专用于数学计算的庞然大物 , 到后来大型机服务器时代 , 从个人微机技术蓬勃发展 , 到互联网浪潮席卷全球 , 再到移动互联网、云计算日新月异的当下 , 计算机变的形态各异 , 无处不在 。
这七十多年中 , 出现了数不清的编程语言 , 通过这些编程语言 , 又开发了无数的应用程序 。
文章插图
可无论什么样的应用程序 , 什么样的编程语言 , 最终的程序逻辑都是要交付给CPU去执行实现的(当然这里有些不严谨 , 除了CPU , 还有协处理器、GPU等等) 。 所以了解和学习CPU的原理都是对计算机基础知识的夯实大有裨益 。
在七十多年的漫长历程中 , 也涌现了不少架构的CPU 。
MIPS
PowerPC
x86/x64
IA64
ARM
······
这篇文章就以市场应用最为广泛的x86-x64架构为目标 , 通过学习了解它内部的100个寄存器功能作用 , 来串联阐述CPU底层工作原理 。
通过这篇文章 , 你将了解到:
CPU指令执行原理
内存寻址技术
软件调试技术原理
中断与异常处理
系统调用
CPU多任务技术
什么是寄存器?寄存器是CPU内部用来存放数据的一些小型存储区域 , 用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息 。
x86架构CPU走的是复杂指令集(CISC) 路线 , 提供了丰富的指令来实现强大的功能 , 与此同时也提供了大量寄存器来辅助功能实现 。 这篇文章将覆盖下面这些寄存器:
通用寄存器
标志寄存器
指令寄存器
段寄存器
控制寄存器
调试寄存器
描述符寄存器
任务寄存器
MSR寄存器
通用寄存器首当其冲的是通用寄存器 , 这些的寄存器是程序执行代码最最常用 , 也最最基础的寄存器 , 程序执行过程中 , 绝大部分时间都是在操作这些寄存器来实现指令功能 。
所谓通用 , 即这些寄存器CPU没有特殊的用途 , 交给应用程序“随意”使用 。 注意 , 这个随意 , 我打了引号 , 对于有些寄存器 , CPU有一些潜规则 , 用的时候要注意 。
eax: 通常用来执行加法 , 函数调用的返回值一般也放在这里面
ebx: 数据存取
ecx: 通常用来作为计数器 , 比如for循环
edx: 读写I/O端口时 , edx用来存放端口号
esp: 栈顶指针 , 指向栈的顶部
ebp: 栈底指针 , 指向栈的底部 , 通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量
esi: 字符串操作时 , 用于存放数据源的地址
edi: 字符串操作时 , 用于存放目的地址的 , 和esi两个经常搭配一起使用 , 执行字符串的复制等操作
在x64架构中 , 上面的通用寄存器都扩展成为64位版本 , 名字也进行了升级 。 当然 , 为了兼容32位模式程序 , 使用上面的名字仍然是可以访问的 , 相当于访问64位寄存器的低32位 。
rax rbx rcx rdx rsp rbp rsi rdi
除了扩展原来存在的通用寄存器 , x64架构还引入了8个新的通用寄存器:
r8-r15
在原来32位时代 , 函数调用时 , 那个时候通用寄存器少 , 参数绝大多数时候是通过线程的栈来进行传递(当然也有使用寄存器传递的 , 比如著名的C++ this指针使用ecx寄存器传递 , 不过能用的寄存器毕竟不多) 。
进入x64时代 , 寄存器资源富裕了 , 参数传递绝大多数都是用寄存器来传了 。 寄存器传参的好处是速度快 , 减少了对内存的读写次数 。
当然 , 具体使用栈还是用寄存器传参数 , 这个不是编程语言决定的 , 而是编译器在编译生成CPU指令时决定的 , 如果编译器非要在x64架构CPU上使用线程栈来传参那也不是不行 , 这个对高级语言是无感知的 。
标志寄存器标志寄存器 , 里面有众多标记位 , 记录了CPU执行指令过程中的一系列状态 , 这些标志大都由CPU自动设置和修改:
CF 进位标志
PF 奇偶标志
ZF 零标志
SF 符号标志
OF 补码溢出标志
- 关华为P50Pro|华为P50Pro概念图:半圆形6摄,看完iPhone12劝你暂时别买
- 猫腻|为什么拼多多上商品价格那么便宜还包邮?有什么猫腻?看完明白了
- 经济总量|美国经济总量世界第一,究竟是靠哪些产业支撑的呢?看完长知识了
- 系列|Redmi Note9系列开售:三个亮点和一个缺点,看完再买也不迟
- 用OPPOFindX2Pro超广角|Find X2 Pro超广角大片来袭,多名大V晒样张,看完网友都这么说
- 纸条|女子网购买了一双鞋,收货后发现一张纸条,看完她怒了
- 为什么手机大厂们都喜欢搞子品牌?看完算长知识了
- 现在入手苹果11值吗,它跟12相比到底好在哪?看完算搞懂了
- 你居然还在花钱重装系统,看完我的教程让你不再花这笔冤枉钱
- 安卓面试必备的JVM虚拟机制详解,看完之后简历上多一个技能