4、段描述符属性--windows内核学习笔记

1、段描述符*p = 1 段描述符有效,p = 0 段描述符无效,(高4位也就是第二个字节的最高位>=0x8)2、段描述符与段寄存器的关系struct SegMent{ WORD Selector; // 段选择子 16位 可见 WORD Attributes; // 段属性 16位 不可见 只有少数几个属性位是有效的 DWORD Base // 段起始地址 32位 不可见 仅对于FS和GS有效 DWORD Limit // 段大小 32位 不可见 仅对于FS和GS
摘要由CSDN通过智能技术生成

1、段描述符

在这里插入图片描述
*p = 1 段描述符有效,p = 0 段描述符无效,(高4位也就是第二个字节的最高位>=0x8)

2、段描述符与段寄存器的关系

struct SegMent
{
   
	WORD Selector;		// 段选择子 16位 可见
	WORD Attributes;	// 段属性  16位 不可见 只有少数几个属性位是有效的
	DWORD Base			// 段起始地址 32位 不可见  仅对于FS和GS有效
	DWORD Limit			// 段大小 32位 不可见   仅对于FS和GS有效
}

*DWORD Base = Base 32:24 + Base 23:16 + Base 15:0
在这里插入图片描述

*DWORD Limit = Limit19:16 + Limit15:0
在这里插入图片描述

也就是Limit 19:16 + Segment 15:0 = 20现在才20位 DWORD Limit 一共是32位,剩下12位从哪里来这就引出了我们今天要提的另外一个属性,G位如果G位为0在前面补12个0,如果G位为1在后面补12个1
00 cf 93 00`00 00 ff ff高32字节=0000 0000 1100 1111 1001 0011 0000 0000‬
G位为1,后面补12个1(G位置 = 高四个字节中第三个字节的最高位)
所以可以看到Limit的值大小是由G位决定的

*GDT描述符分为两大类,分别是“系统段描述符” “数据或代码段的描述符”
**s = 1 代码段或者数据段描述符,s = 0 系统段描述符
s位也就是高4字节中第二个字节的第12位

0x12345678 中的5

3、Type域
*也就是高四字节中的第二个字节的低4位
在这里插入图片描述
第11位为0:段描述符为数据段描述符
第11位为1:段描述符为代码段描述符
A位:若该代码段/数据段未被访问过,则值为0,否则为1
W位:若为1,表示该段可写
E位:若为0,则向上拓展,若为1,则向下拓展

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值