段描述符属性参照表

段描述符属性结构(2字节):
在这里插入图片描述
      (1) G: 段界限粒度(Granularity)位。
      G=0 表示界限粒度为字节;
      G=1 表示界限粒度为4K 字节。
      注意,界限粒度只对段界限有效,对段基地址无效,段基地址总是以字节为单位。

      (2) D: D位是一个很特殊的位,在描述可执行段、向下扩展数据段或由SS寄存器寻址的段(通常是堆栈段)的三种描述符中的意义各不相同。
      ⑴ 在描述可执行段的描述符中,D位决定了指令使用的地址及操作数所默认的大小。
      ① D=1表示默认情况下指令使用32位地址及32位或8位操作数,这样的代码段也称为32位代码段;
      ② D=0 表示默认情况下,使用16位地址及16位或8位操作数,这样的代码段也称为16位代码段,它与80286兼容。可以使用地址大小前缀和操作数大小前缀分别改变默认的地址或操作数的大小。
       ⑵ 在向下扩展数据段的描述符中,D位决定段的上部边界。
       ① D=1表示段的上部界限为4G;
      ② D=0表示段的上部界限为64K,这是为了与80286兼容。
       ⑶ 在描述由SS寄存器寻址的段描述符中,D位决定隐式的堆栈访问指令(如PUSH和POP指令)使用何种堆栈指针寄存器。
       ① D=1表示使用32位堆栈指针寄存器ESP;
      ② D=0表示使用16位堆栈指针寄存器SP,这与80286兼容。

      (3) AVL: 软件可利用位。80386对该位的使用未左规定,Intel公司也保证今后开发生产的处理器只要与80386兼容,就不会对该位的使用做任何定义或规定。
      (4) P: 存在(Present)位。
      P=1 表示段在内存中;
      P=0 表示段不在内存中。

      (5) DPL: 表示描述符特权级(Descriptor Privilege level),共2位。它规定了所描述段的特权级,用于特权检查,以决定对该段能否访问。

       (6) S: 说明描述符的类型。
      S=1,数据段和代码段描述符;S=0,系统段描述符和门描述符。
      (7) TYPE: 当S=1时,描述数据段和代码段的属性。

0123
访问位读写位一致位执行位

       数据段类型:

类型值说明
0只读
1只读、已访问
2读/写
3读/写、已访问
4只读、向下扩展
5只读、向下扩展、已访问
6读/写、向下扩展
7读/写、向下扩展、已访问

      代码段类型:

类型值说明
8只执行
9只执行、已访问
A执行/读
B执行/读、已访问
C只执行、一致码段
D只执行、一致码段、已访问
E执行/读、一致码段
F执行/读、一致码段、已访问

关于一致代码段和非一致代码段可以参考这位大佬的博客:
一致代码段和非一致代码段
      当S=0时,系统段类型:

类型编码说明
0<未定义>
1可用286TSS
2LDT
3忙的286TSS
4286调用门
5任务门
6286中断门
7286陷阱门
8未定义
9可用386TSS
A<未定义>
B忙的386TSS
C386调用门
D<未定义>
E386中断门
F386陷阱门
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值