关于段选择子属性的疑惑
来源:互联网 发布:array vb 编辑:程序博客网 时间:2024/05/22 14:37
段选择子属性结构是怎么区分的?疑惑,而后在网上搜到一篇几年前的贴,明白的解释了这个的问题;
段选择子长16位,格式如下表所示:
; 选择子图示:; ┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓; ┃ 15┃ 14 ┃ 13 ┃ 12┃ 11┃ 10 ┃ 9 ┃ 8 ┃ 7 ┃ 6 ┃ 5 ┃ 4 ┃ 3 ┃ 2 ┃ 1 ┃ 0 ┃; ┣━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━╋━━╋━━┻━━┫; ┃ 描述符索引 ┃ TI ┃ RPL ┃; ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━┻━━━━━┛;; RPL(Requested Privilege Level): 请求特权级,用于特权检查。;; TI(Table Indicator): 引用描述符表指示位; TI=0 指示从全局描述符表GDT中读取描述符;; TI=1 指示从局部描述符表LDT中读取描述符。;;----------------------------------------------------------------------------; 选择子类型值说明; 其中:; SA_ : Selector AttributeSA_RPL0 EQU 0 ; ┓SA_RPL1 EQU 1 ; ┣ RPLSA_RPL2 EQU 2 ; ┃SA_RPL3 EQU 3 ; ┛SA_TIG EQU 0 ; ┓TISA_TIL EQU 4 ; ┛;----------------------------------------------------------------------------
段选择子的高13位是描述符索引(Index)。所谓描述符索引是指描述符在描述符表中的序号。段选择子的第2位是引用描述符表指示位,标记为TI(Table Indicator),TI=0指示从全局描述符表GDT中读取描述符;TI=1指示从局部描述符表LDT中读取描述符。
选择子确定描述符,描述符确定段基地址,段基地址与偏移之和就是线性地址。所以,虚拟地址空间中的由选择子和偏移两部分构成的二维虚拟地址,就是这样确定了线性地址空间中的一维线性地址。
在《自己动手写操作系统中》对选择子的赋值如下:
; GDT 选择子
SelectorNormal equ LABEL_DESC_NORMAL - LABEL_GDT
SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT
SelectorCode16 equ LABEL_DESC_CODE16 - LABEL_GDT
SelectorData equ LABEL_DESC_DATA - LABEL_GDT
SelectorStack equ LABEL_DESC_STACK - LABEL_GDT
SelectorLDT equ LABEL_DESC_LDT - LABEL_GDT
表面上看这段代码像是仅计算偏移量。因为第0个描述符(LABEL_GDT)做为“空描述符”占8字节,那么(不考虑三位属性的话):
第1个描述符的选择子是 0000 0000 0000 1000 ;(8)
第2个描述符的选择子是 0000 0000 0001 0000 ;(16)
...........以此累加。
当把后三位去掉,那么高13位就成了由1开始累加的索引值;
- 关于段选择子属性的疑惑
- 8086关于段地址的疑惑
- 段描述符与段选择子的结构
- FAQ3:关于Dll注入之后共享段与非共享段变量的疑惑?
- windows堆栈段的疑惑~
- 关于LinkButton的PostBackUrl属性的一点疑惑
- xml属性和子元素的选择
- 关于教育质量的疑惑
- 关于接口的疑惑
- 关于CreateProcess的疑惑
- 关于指针的疑惑
- 关于getopt_long的疑惑
- 关于MVC的疑惑
- 关于setVisibility的疑惑
- 关于Manifest的疑惑
- 关于printf的疑惑
- 关于VM_COPYDATA的疑惑
- 关于RecyclerView的疑惑
- 使用java连接hive,并执行hive语句详解
- UVa - 10194 - Train Swapping
- 后悔和妥协
- Linux 修改IP地址和网关
- IOS系列——加载网页webView
- 关于段选择子属性的疑惑
- OpenJMS主题发布和订阅
- 三星摄像头调试
- 轻松学习RSA加密算法原理
- 18款在线代码片段测试工具
- java值传递
- 关于GRE的思考
- android面试题之五
- hdu 4101 - Ali and Baba(搜索)