Segment descriptor

描述符分三类:存储段描述符,系统段描述符,门描述符

存储段:
dw: limit 0..15(长度-1)
dw: base  0..15
db: base  16..23
db: attribute: 
    P:    1 bit     正常是1,表示存在
    DPL:  2 bits:   特权级,00,01,10,11
    DT1:  1 bit     DT = 1, 存储段,DT = 0, 系统段和门描述符
    TYPE: 4 bits    
          bit 0: A 访问标记 A=1,段已被访问
          bit 1: E=0(数据段)时,W, 是否可写,W=1,数据段可写.
                 E=1,           R, 是否可读, R=0, 不可读,只能执行. R=1,可读可执行.
          bit 2: ED,E=0时的扩展方向,ED=1,向高端扩展,ED=0,向低端扩展
          bit 3: E,段类型 E=1,可执行段,即代码段, 总是不可写
                          E=0 数据段, 总是不可执行,但总是可读的. 
      对于数据段:一般是2 读,写
      对于代码段:一般是a,执行,可读
  
db: G,    段界粒度(Granularity)  G=0,字节, G=1,4k字节 
    D,    1. 可执行段: 指令地址和操作数默认大小 D=1, 32地址,32位操作数或8位操作数,即32位代码段
                                             D=0  16      16         8            16 
             可以使用前缀改变,比如mov ebx, dword [...]
          2. 在向下扩展的数据段中,D位决定段的上部边界,D=1表示上部界限为4G, D=0,表示64K
          3. SS寄存器寻址的段描述符中,D位决定隐式的堆栈访问指令(如PUSH、POP)使用何种堆栈指针寄存器
             D=1, 用esp  D=0, 用sp 
    0, 
    AVL, 未定义 
    limit 16..19 

db: base  24..31


系统段:任务状态段和描述LDT的段
属性部分,即5,6字节不一样,limit和base是一样的。

db: attribute 1
  P
  DPL
  DT = 0
  TYPE:  常用:2, LDT,         系统段
               5, 任务门 
               9, 可用386TSS  系统段
               B,忙的386TSS  系统段
               C, 386调用门
               E, 386中断门
               F, 386陷阱门
     
db: attribute 2
  G
  X: D位在这里无效,以X代替。 
  0
  AVL



门描述符:
字符5与系统段保持一致,其它都变了。
dw: offset 0..15
dw: selector
db: attribute 1   高三位为0, 
                  低5位为dword count,只用于调用门:发生特权级变换时,要把外层堆栈的参数
                                     复制到内层堆栈,dword count记录要复制的双字参数的数量
db: attribute 2   与系统段一致
dw: offset 16..31


 1.调用门:子程序入口,使用段间调用指令call, 通过调用门可实现任务内从外层特权级变换到内层特权级.
 2.任务门:selector要指向GDT中的tss段描述符.门中偏移无意义。
           任务的入口点保存在tss中,利用段间转移jmp和段间调用call, 通过任务门实现任务切换。
 3.中断门和陷阱门:中断、异常处理程序的入口点。中断门和陷阱门的描述符放在IDT中。

DATA SEGMENT DESCRIPTOR
+-----------------+-+-+-+-+---------+-+-----+---------+-----------------+
 |#################|#|#|#|A| LIMIT   |#|     |  TYPE   |#################|
 |###BASE 31..24###|G|B|0|V| 19..16  |P| DPL |         |###BASE 23..16###| 4
 |#################|#|#|#|L|         |#|     |1|0|E|W|A|#################|
 |-----------------+-+-+-+-+---------+-+-----+-+-+-+-+-+-----------------|
 |###################################|                                   |
 |########SEGMENT BASE 15..0#########|        SEGMENT LIMIT 15..0        | 0
 |###################################|                                   |
 +-----------------+-----------------+-----------------+-----------------+

EXECUTABLE SEGMENT DESCRIPTOR

  31                23                15                7               0
 +-----------------+-+-+-+-+---------+-+-----+---------+-----------------+
 |#################|#|#|#|A| LIMIT   |#|     |  TYPE   |#################|
 |###BASE 31..24###|G|D|0|V| 19..16  |P| DPL |         |###BASE 23..16###| 4
 |#################|#|#|#|L|         |#|     |1|0|C|R|A|#################|
 |-----------------+-+-+-+-+---------+-+-----+-+-+-+-+-+-----------------|
 |###################################|                                   |
 |########SEGMENT BASE 15..0#########|        SEGMENT LIMIT 15..0        | 0
 |###################################|                                   |
 +-----------------+-----------------+-----------------+-----------------+


SYSTEM SEGMENT DESCRIPTOR

  31                23                15                7               0
 +-----------------+-+-+-+-+---------+-+-----+-+-------+-----------------+
 |#################|#|#|#|A| LIMIT   |#|     | |       |#################|
 |###BASE 31..24###|G|X|0|V| 19..16  |P| DPL |0| TYPE  |###BASE 23..16###| 4
 |#################|#|#|#|L|         |#|     | |       |#################|
 |-----------------+-+-+-+-+---------+-+-----+-+-------+-----------------|
 |###################################|                                   |
 |########SEGMENT BASE 15..0#########|       SEGMENT LIMIT 15..0         | 0
 |###################################|                                   |
 +-----------------+-----------------+-----------------+-----------------+
        A   - ACCESSED                              E   - EXPAND-DOWN
        AVL - AVAILABLE FOR PROGRAMMERS USE         G   - GRANULARITY
        B   - BIG                                   P   - SEGMENT PRESENT
        C   - CONFORMING                            R   - READABLE
        D   - DEFAULT                               W   - WRITABLE
        DPL - DESCRIPTOR PRIVILEGE LEVEL

posted @ 2020-02-15 15:33  北极熊129  阅读(302)  评论(0)    收藏  举报