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 表的位置
  • 相关阅读:
    python文件处理(对比和筛选)版本2
    python文件处理(对比和筛选)
    python 从2个文件中提取不相同的内容并输出到第三个文件中
    Unity学习(十三)场景优化之四叉树
    Android权限之三共享UID和签名
    > 软件编程 > 安卓开发 > Unity编译时找不到AndroidSDK的问题:Unable to list target pla
    Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
    Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
    Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
    Unity性能优化(1)-官方教程The Profiler window翻译
  • 原文地址:https://www.cnblogs.com/huqingyu/p/110754.html
Copyright © 2011-2022 走看看