段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结
来源:互联网 发布:淘宝宝贝重新编辑 编辑:程序博客网 时间:2024/06/08 09:26
段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结
1 段寄存器
段寄存器包括CS,SS,DS,ES,FS,GS。结构如下图:
段寄存器包括可见部分和不可见部分。可见部分是段选择符字段,不可见部分包括基地址字段、界限字段和访问信息。段寄存器首先加载段选择符来填充可见部分,不可见部分的字段由段选择符指向GDT或LDT中的段描述符的字段填充。
2 段选择符(Segment Selectors)
段选择符为16位,描述段的一些信息,它不是直接指向段,指向在GDT或LDT中的段描述符。如下图所示,
段选择符的包含以下字段:
索引(index)—位3到位15。可以在GDT或LDT中寻址到213(8192)个描述符。
TI标志—位2。为0,描述符在GDT中,为1,描述符在LDT中。如下图所示。
请求特权级(RPL)—位0到位1。表示特权级0,1,2,3。描述符中则为DPL(描述特权级)。
3 段描述符(Segment descriptors)
段描述符是保存在GDT或LDT中一种数据结构,为处理器提供段的大小和位置以及控制和状态信息。通常段描述符是由编译器,连接器,装载器或操作系统生成,而不是应用程序。下图描述段描述符的结构:
段选择符的字段如下:
(1)段界限字段—指定段的大小。段界限字段为20位,如果G标志设置,表明表明段的大小从4KB到4GB,4KB增长;如果G标志清除,段的大小从1Byte到1Mbyte。
(2)基地址字段—32位,定义在4GB的线性地址空间中段0字节的位置(开始位置)。
(3)类型字段—说明段或门的类型和指出段的访问方式和增长方向。跟是否是应用程序(代码或数据)描述符或者系统描述符有关。
(4)S标志—被清除,说明是系统段;设置,说明是代码或数据段。
(5)DPL字段—说明段的特权级0,1,2,3。
(6)P标志—置位,说明该段在内存中;被清除,说明该段不在内存中。
(7)D/B标志—根据段描述符是可执行代码段、向下扩展的数据段还是栈段完成不同功能。如果是可执行代码段,该标志称为D标志,表明指令引用段中有效地址和操作数的长度。如果是栈段,该标志称为B标志,表明隐式栈操作(pops,pushes,calls)栈指针的大小。如果是向下扩展的数据段—该标志称为B标志,表明段的上限。
(8)G标志—决定段的界限字段的的大小和步进。
(9)L标志—表明代码段是否包含原生的64位代码,为1表明该代码段的指令运行在64位模式,为0表明代码段指令运行在32位模式。
(10)可用和保留位—系统软件可用或保留。
代码段、数据段和系统段的结构如下图:
选择符和描述符的关系举例:
由选择符访问描述表中的描述符,得到基址信息,在加上偏移,完成逻辑地址向线性地址(虚拟地址)的转变。
good luck!
- 段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结
- ITK 阈值分割(Threshold segement/BinaryThreshold)
- 段选择符 段寄存器
- 段选择符 段寄存器
- 段选择符 段寄存器
- TSS(任务状态段) TSS描述符 任务寄存器(TR) 任务门描述符 学习总结
- Ural 1078 segement
- 段选择符和段寄存器
- 段选择符和段寄存器
- 段选择符和段寄存器
- 分段管理机制(段描述符,描述符表,段选择符)
- 内存寻址(三)--分段管理机制(段描述符,段选择子,描述符表)
- 深入理解计算机系统-之-内存寻址(三)--分段管理机制(段描述符,段选择子,描述符表)
- 段选择符,段描述符,描述符表
- 段描述符高速缓冲寄存器
- 段描述符高速缓冲寄存器
- 内核源码学习:段机制和描述符(二)
- 内核源码学习:段机制和描述符(一)
- Android面试-Java基础-集合
- python 绘制svg
- ssm实战--实现购物车功能
- mac下查看java版本
- MySQL查询所有字段
- 段寄存器(segement register) 段选择符(segement selector) 段描述符(segement descriptor) 学习总结
- Realm之一步上位(基于本地Realm数据库的Android图书馆管理系统)
- 题目1533:最长上升子序列
- 破解IntelliJ IDEA 2017.1 到期日期2099年 附下载地址
- nginx 基本命令
- Vim学习及配置
- 写在2017年第一百八十二天
- lua性能分析
- javascript 使用btoa和atob来进行Base64转码和解码