zoukankan      html  css  js  c++  java
  • [操作系统]存储段描述符

    存储段
    描述符
    m+7 m+6 m+5 m+4 m+3 m+2 m+1 m+0
    Base(31...24) Attributes Segment Base(23...0) Segment Limite(15...0)

    存储段
    描述符
    属  性
    Byte m+6 Byte m+5
    BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
    G D 0 AVL Limit(19...16) P DPL DT1 TYPE

    数据段
    类  型
    类型值 说      明
    0 只读
    1 只读、已访问
    2 读/写
    3 读/写、已访问
    4 只读、向下扩展
    5 只读、向下扩展、已访问
    6 读/写、向下扩展
    7 读/写、向下扩展、已访问
    代码段
    类  型
    类型值 说      明
    8 只执行
    9 只执行、已访问
    A 执行/读
    B 执行/读、已访问
    C 只执行、一致码段
    D 只执行、一致码段、已访问
    E 执行/读、一致码段
    F 执行/读、一致码段、已访问

    根据存储段描述符的结构,可定义如下的汇编语言描述符结构类型: 
        DESC       STRUC LIMITL DW      0 ;段界限低16位
        BASEL      DW      0 ;基地址低16位
        BASEM      DB      0 ;基地址中间8位
        ATTRIB     DB      0 ;段属性
        LIMITH     DB      0 ;段界限的高4位(包括段属性的高4位)
        BASEH      DB      0 ;基地址的高8位
        DESC       ENDS

    示例:
    gdt:
        gdt_null:           ; 这是CPU要求保留的,CPU要求第一个段必须是空段,空描述符的64位全是0
            dd  0
            dd  0           ; 每个段的描述符是64位(8字节),dd表示4个字节,两个dd刚好8个字节,

        gdt_code_addr equ $ - gdt   ; 求得代码段在GDT表中的位置
        gdt_code:
            dw  0xFFFF      ; 段低16位
            dw  0                ; 基地址(24位)
            db  0       
            db  10011010b   ; 0x9A 属性描述位,P=1,DPL=0,DT1=1,TYPE=A,指明此是代码段、可读可执行
            db  11001111b   ; 0xCF 0xC为属性描述表示G=1,D=1,AVL=0,表示段界以4K为单位,32位代码段,0xF为段界高8位
                                    ; 得出:段界为0xFFFFF,因G=1所以表示4G空间
            db  0          

        gdt_data_addr equ $ - gdt   ; 求得数据段在GDT表中的位置,段界、其它属性分析与上同
        gdt_data:                    
            dw  0xFFFF       
            dw  0                
            db  0
            db  10010010b   ;  0x92 属性描述位,P=1,DPL=0,DT1=1,TYPE=2,指明此是数据段,可读可写
            db  11001111b
            db  0
        gdt_end:
        gdt_addr:
            dw  gdt_end - gdt - 1   ; GDT 表的大小
            dd  gdt                 ; GDT 表的位置
  • 相关阅读:
    asp.net mvc 路由检测工具
    asp.net mvc 通过StyleBundle添加样式后,没有作用
    mssql for xml path使用
    vs2013在使用ef6时,创建模型向导过程中,四种模型方式缺少2种
    Enterprise Craftsmanship
    对于已经添加引用,还找不到类型或名字空间的错误及svn客户端清除用户帐号密码
    Hadoop Yarn环境配置
    mac和Linux的环境变量设置
    文本分类入门(十)特征选择算法之开方检验
    ERROR 2003:Can't connect to MySQL server on 'localhost'
  • 原文地址:https://www.cnblogs.com/huqingyu/p/110754.html
Copyright © 2011-2022 走看看