12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 322|回复: 0

保护模式笔记四 段描述符结构

[复制链接]

71

主题

71

帖子

152

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
152
发表于 2021-7-18 18:25:53 | 显示全部楼层 |阅读模式
前言

所有掩护模式索引链接:掩护模式笔记一 掩护模式先容
先前了解了段形貌符和段选择子之间的对应关系,继续深入学习段形貌符的结构
段形貌符结构


数据位31-242322212019-161514-131211-87-0含义BaseGD/B0AVLSeg.LimitPDPLSTypeBase解释基地址粒度默认操作大小固定为0用于系统软件使用段大小限制有用位特权等级形貌符类型段类型基地址数据位31-1615-0含义Base AdressSegment Limit解释基地址段大小限制段形貌符与段寄存器的对应关系

段寄存器组成BaseLimitAttribute数据宽度32位32位16位形貌基地址(当前段的起始地址)大小限制(当前段的整个长度)属性(当前段是否可读可写可执行)对应段形貌符段形貌符中的3段base段形貌符中的2段limit和G位共同决定对应位高4字节:24~31 0~7 ,低4字节:16~31高4字节:16~19,低4字节:0~15高4字节:8~23P位

当段形貌符加载至段寄存器时,CPU首先要做的事就是检查段形貌符的P位
P==0P==1含义该段形貌符无效该段形貌符有用也就是说:P位决定了该段形貌符是否有用
G位

CPU判定完段形貌符P位有用后,还需要判定地址是否超出Limit
但会发现这里的Limit分为了两段,但两段的总长度也只有4+16=20位,和段寄存器中的Limit的32位不匹配
这里的Limit的最大表示范围是:0~2的20次方-1=0~0xFFFFF
而段寄存器中的Limit的最大表示范围是:0~2的32次方-1=0~0xFFFFFFFF
很显然如今的Limit无法表示段寄存器中的Limit了,为了办理这个题目,引入了G位:粒度(用来表示Limit的单元)
G==0G==1含义limit以字节为单元limit以4096=2的12次方 字节为单元表示范围0~0xFFFFF0xFFF~0xFFFFFFFF也就是说:G位决定了limit的单元
S位

S位用来标记当前形貌符的类型
S==0S==1含义系统段形貌符代码段或数据段形貌符段形貌符可以分为系统形貌符、代码段形貌符和数据段形貌符
根据S位的不同(形貌符类型的不同)对应的Type域也不同
也就是说:S位决定了Type域的含义
Type域

Type占据了第11位到第8位,共4位
S位为1时

当S==1时,该段形貌符为代码段形貌符或者数据段形貌符

十进制111098形貌符类型形貌E(是否向下扩展)W(是否可写)A(是否可访问)00000数据段形貌符只读10001数据段形貌符只读,可访问20010数据段形貌符可读可写30011数据段形貌符可读可写可访问40100数据段形貌符只读,向下扩展50101数据段形貌符只读,向下扩展,可访问60110数据段形貌符可读可写,向下扩展70111数据段形貌符可读可写,向下扩展,可访问C(是否可以从较低的特权级别调用)R(是否可读)A(是否可访问)81000代码段形貌符只可执行91001代码段形貌符只可执行,可访问101010代码段形貌符可执行可读111011代码段形貌符可执行可读,可访问121100代码段形貌符只可执行,可从较低特权级别调用131101代码段形貌符只可执行,可从较低特权级别调用,可访问141110代码段形貌符可执行可读,可从较低特权级别调用151111代码段形貌符可执行可读,可从较低特权级别调用,可访问主要阐明一下向下扩展和非向下扩展(向上扩展)
向上扩展就是:该段形貌符所形貌的地址的有用范围是从Base开始到Base+Limit结束
为下图中的红色部门:

与之相反,向下扩展则是:该段形貌符所形貌的地址的有用范围除了 从Base开始到Base+Limit结束 之外的部门
为下图中的红色部门

S位为0时

当S==0时,该段形貌符为系统形貌符
系统形貌符有分为以下类型:

十进制111098形貌00000保存1000116位 使命状态段TSS(可用)20010LDT3001116位 使命状态段TSS(繁忙)4010016位 调用门50101使命门6011016位 中断门7011116位 陷阱门81000保存9100132位 使命状态段TSS(可用)101010保存11101132位 使命状态段TSS(繁忙)12110032位 调用门131101保存14111032位 中断门15111132位 陷阱门关于系统形貌符中的TSS、调用门、中断门、陷阱门 留作之后的笔记,这里不再睁开
Type域决定了当前段的属性
D/B位

D/B位分别作用于3种环境:

  • 对CS段的影响
  • 对SS段的影响(SS段也属于数据段)
  • 对向下扩展的数据段的影响
D/B == 0D/B == 1CS段采用16位寻址方式采用32位寻址方式SS段使用16位堆栈指针寄存器SP使用32位堆栈指针寄存器ESP向下扩展的数据段段上限为64KB段上限为4GB主要阐明一下对 向下扩展的数据段的影响
D/B位为1时


D/B位为0时


DPL

DPL=Descriptor privilege level(形貌符特权等级)为:访问这个形貌符所需的特权级别(环ring)
关于段的权限检查,留作之后的笔记,这里不再睁开
根据结构分析段形貌符

大致了解了段形貌符的结构后,就可以通过结构来分析一个段形貌符了
给出的示例段形貌符为:00cffb00`0000ffff
先转换成二进制:0000 0000 1100 1111 1111 1011 0000 0000 ` 0000 0000 0000 0000 1111 1111 1111 1111
按照对应的格式填入:
数据位31-242322212019-161514-131211-87-0含义BaseGD/B0AVLSeg.LimitPDPLSTypeBase解释基地址粒度默认操作大小固定为0用于系统软件使用段大小限制有用位特权等级形貌符类型段类型基地址数值00000000110011111111101100000000数据位31-1615-0含义Base AdressSegment Limit解释基地址段大小限制数值00000000000000001111111111111111P位

此时P位为1,表明当前的段形貌符有用
G位

此时的G位为1,表明此时limit以4096字节为单元
Limit

此时的Limit为0xFFFFF,但其单元为4096字节,于是Limit即是0xFFFFF FFF 字节
S位

此时的S位为1,表明该段形貌符为代码段形貌符或者数据段形貌符
Type域

此时的Type域为1011,表明该段形貌符为代码段形貌符,且可执行可读,可访问
D/B位

此时的D/B位为1,表明此时采用32位寻址方式
DPL

此时的DPL为11,表明访问这个形貌符所需的特权级别为ring3(应用层)
阐明

此篇笔记大体先容了段形貌符的结构,以及怎样通过结构来解析一个段形貌符的含义
目前还剩下段的权限检查和系统形貌符没有具体阐明,留作之后的笔记( ̄( ̄ )

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-27 14:33 , Processed in 0.140625 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表