一口气看完45个寄存器,CPU核心技术大揭秘( 五 )


这里选取三个代表性的MSR简单介绍一下:
IA32_SYSENTER_CS
IA32_SYSENTER_ESP
IA32_SYSENTER_EIP
这三个MSR寄存器是用来实现快速系统调用 。
在早期的x86架构CPU上 , 系统调用依赖于软中断实现 , 类似于前面调试用到的int 3指令 , 在Windows上 , 系统调用用到的是int 2e , 在Linux上 , 用的是int 80 。
软中断毕竟还是比较慢的 , 因为执行软中断就需要内存查表 , 通过IDTR定位到IDT , 再取出函数进行执行 。
系统调用是一个频繁触发的动作 , 如此这般势必对性能有所影响 。 在进入奔腾时代后 , 就加上了上面的三个MSR寄存器 , 分别存储了执行系统调用后 , 内核系统调用入口函数所需要的段寄存器、堆栈栈顶、函数地址 , 不再需要内存查表 。 快速系统调用还提供了专门的CPU指令sysenter/sysexit用来发起系统调用和退出系统调用 。
在64位上 , 这一对指令升级为syscall/sysret 。
总结以上就是全部要介绍的寄存器了 , 需要说明一下的是 , 这并不是x86CPU全部所有的寄存器 , 除了这些 , 还存在XMM、MMX、FPU浮点数运算等其他寄存器 。
这篇文章以x86/x64架构CPU为目标 , 通过对CPU内部寄存器的阐述 , 串讲了CPU执行代码机制、内存寻址技术、中断与异常处理、多任务管理、系统调用、调试原理等多种计算机底层知识 。
作者:轩辕之风
【一口气看完45个寄存器,CPU核心技术大揭秘】来源:编程技术宇宙(ID:xuanyuancoding)