
【计】 segment descriptor format
part; passage; sect; section; segment
【计】 segment
【医】 piece; sectile; segment; segmentum
【计】 descriptor
form; pattern
【计】 format; format detail; formats
【化】 format
【经】 format; forms
段描述符(Segment Descriptor)是计算机体系结构中,特别是在x86架构的保护模式下,用于定义内存段属性的关键数据结构。它存储在全局描述符表(GDT)或局部描述符表(LDT)中,由段选择子(Segment Selector)索引引用。以下从汉英对照角度详细解释其格式及含义:
下表分解段描述符的二进制布局(按Intel手册标准):
比特位范围 | 字段名称(汉语) | 字段名称(英语) | 功能说明 |
---|---|---|---|
0–15 (低16位) | 段界限低16位 | Limit (Low 16 bits) | 段界限的低16位,与高4位共同构成20位界限值。 |
16–31 | 基地址低16位 | Base Address (Low 16 bits) | 段基地址的低16位。 |
32–39 | 基地址中8位 | Base Address (Mid 8 bits) | 段基地址的中间8位。 |
40–47 | 访问控制字节 | Access Byte | 包含段类型、特权级、存在位等关键属性(详见下表)。 |
48–51 | 段界限高4位 | Limit (High 4 bits) | 段界限的高4位,与低16位共同构成20位界限值。 |
52–55 | 标志位 | Flags | 包含粒度(Granularity)和默认操作大小(Default Operation Size)等。 |
56–63 | 基地址高8位 | Base Address (High 8 bits) | 段基地址的高8位。 |
访问控制字节(40–47位)进一步拆分为以下字段:
比特位 | 字段名称(汉语) | 字段名称(英语) | 取值与含义 |
---|---|---|---|
40 | 访问位 (A) | Accessed | 0=未访问;1=已访问(由CPU设置,表示段是否被访问过)。 |
41 | 可读/可写位 (RW) | Readable/Writable | 代码段:1=可读;数据段:1=可写。 |
42 | 扩展方向/一致位 | Direction/Conforming | 数据段:1=向下扩展(栈段);代码段:1=一致段(允许低特权级调用)。 |
43 | 执行位 (E) | Executable | 0=数据段;1=代码段。 |
44 | 描述符类型 (S) | Descriptor Type | 0=系统段(如TSS/LDT);1=代码/数据段。 |
45–46 | 特权级 (DPL) | Descriptor Privilege Level | 00=最高(Ring 0);11=最低(Ring 3)。控制访问该段所需CPU特权级。 |
47 | 存在位 (P) | Present | 0=段不在内存;1=段有效。若为0,访问时触发段异常(#NP)。 |
比特位 | 字段名称(汉语) | 字段名称(英语) | 含义 |
---|---|---|---|
52 | 保留位 | Reserved | 恒为0。 |
53 | 长模式位 (L) | Long Mode | 1=64位代码段(仅IA-32e模式有效)。 |
54 | 默认操作大小 (D/B) | Default Operation Size | 代码段:1=32位指令;0=16位指令。数据段:1=32位栈指针;0=16位栈指针。 |
55 | 粒度位 (G) | Granularity | 0=段界限以字节为单位;1=段界限以4KB为单位(界限值需左移12位)。 |
段基地址计算
Base = Base_High << 24 | Base_Mid << 16 | Base_Low
即基地址 = 高8位左移24位 + 中8位左移16位 + 低16位。
段界限计算
Limit = Limit_High << 16 | Limit_Low
若粒度位G=1,实际界限 = (Limit << 12) + 0xFFF
(扩展至4KB对齐)。
段实际大小
Limit + 1
字节(Limit << 12) + 0x1000
字节段描述符是x86保护模式的核心机制,通过GDT/LDT实现:
参考来源:
段描述符是x86架构中用于定义内存段属性的数据结构,存储在全局描述符表(GDT)或局部描述符表(LDT)中,每个描述符占8字节。其核心格式和字段含义如下:
段描述符由两个32位双字组成,主要包含以下字段:
基地址(Base)
段界限(Limit)
访问控制字段
当S标志为1时,TYPE字段含义:
用于定义特殊系统结构:
假设描述符中Limit=0xFFFFF,G=1: $$ begin{aligned} text{实际界限} &= (0xFFFFF + 1) times 4096 - 1 &= 0x100000 times 0x1000 - 1 &= 4GB - 1 end{aligned} $$
以上内容综合了多个权威来源,完整技术细节可参考博客园和CSDN相关文章()。
【别人正在浏览】