009、存储—段寄存器
段寄存器
CPU 在保护模式下,主要通过分段机制和分页机制管理内存。
段寄存器:CS、SS、DS、ES、FS、GS。
| 段寄存器 | 英文 | 作用 |
|---|---|---|
| CS | Code Segment | 代码段寄存器 |
| SS | Stack Segment | 栈段寄存器 |
| DS | Data Segment | 数据段寄存器 |
| ES | Extra Segment | 附加数据段寄存器 |
| FS | FS Segment | 附加段寄存器 |
| GS | GS Segment | 附加段寄存器 |
在 Windows x86 环境中:用户模式(R3)下,FS → _TEB;内核模式(R0)下,FS → _KPCR。
R3:FS 常用于定位线程环境块(_TEB);R0:FS 常用于定位处理器控制区(_KPCR)。
在 Windows x64 环境中通常改用 GS:R3 下 GS → _TEB,R0 下 GS → _KPCR。
Visual Studio
![]()
X86DBG
段寄存器中可见的部分是一个 16 Bit 段选择子(Segment Selector)。
段选择子(Segment Selector)是一个 16 位数,由 INDEX、TI、RPL 三部分组成。
| 位 | 字段 | 作用 |
|---|---|---|
| Bit 0~1 | RPL | 请求特权级,取值范围为 0~3 |
| Bit 2 | TI | 0 表示 GDT,1 表示 LDT |
| Bit 3~15 | INDEX | 段描述符在描述符表中的索引 |
注意:Bit 0~1 存储的是 RPL,不是 CPL;CPL 通常由 CS 段选择子的低两位体现。
0x002B = 0000 0000 0010 1011
INDEX:0000 0000 0010 1 TI:0 RPL:11
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!













