[保护模式]段描述符属性_P位_G位

1.P位

P = 1 段描述符有效

P = 0 段描述符无效

2.段描述符与段寄存器的对应关系

Struct SegMent
{
    WORD Selector;     //16位段选择子
    WORD Attributes; //16位属性            对应的高4字节,从8位开始到23位结束 刚好16字节

    DWORD Base;     //32位基址  由三部分组成  最高位为高四字节的24-31位 ,第二部分位高四字节的第0-7位,第三部分为低四字节的16-31位


    DWORD Limit;    //32位段限长 两部分组成,高位在高4字节的16-19位,第二部分在低4字节的0-15位,段限长最大位为FFFFF(20位),还少12位,那么此时我们就应该看G位

  // 如果 G 位为0 则前面补3个0即可 :000FFFFF  //  如果 G 位为1 则为:1FFF 如果原始5个FFFFF填满的话则是后面再加3F :FFFFFFFF

}

原文地址:https://www.cnblogs.com/hanhandaren/p/11178407.html

时间: 2024-10-17 13:54:12

[保护模式]段描述符属性_P位_G位的相关文章

保护模式_1_段寄存器_段描述符_段选择子

1 段寄存器 1-1 段寄存器的结构 图示: 结构体表示: struct SegMent { WORD Selector; WORD Attribute; DWORD Base; DWORD Limit; } 1-2 段寄存器的属性探测 可以通过MOV指令进行读写(LDTR和TR除外) 段寄存器成员简介 探测Attribute是否存在 int var=0; int main() { __asm { mov ax, ss //cs不行 cs是可读 可执行 但不可写 mov ds, ax mov d

操作系统学习(五) 、代码段和数据段描述符

一.代码段和数据段描述符格式 段描述符通用格式如下所示: 代码段和数据段描述符中各个位的含义如下所示: 二.代码段和数据段描述符类型 当段描述符中S标志位(描述符类型)被置位,则该描述符用于代码段或数据段.此时类型字段中最高比特位(第二个双字的位11)用于确定是数据段描述符(复位)还是代码段描述符(置位). 代码段和数据段描述符类型如下所示: 对于数据段描述符,类型字段的低3位(位8,9,10)分别用于表示已访问A,可写W,和扩展方向E,根据可写比特位W的设置,一个数据段可以是只读的,也可以是可

段描述符(转)

段描述符是GDT和LDT表中的一个数据结构项,用于向处理器提供有关一个段的位置和大小信息以及访问控制的状态信息.每个段描述符的长度是8字节,含有3个主要字段:段基地址.段限长和段属性.段描述符通常由编译器.链接器.加载器或者操作系统来创建,但绝不是应用程序.图4-13给出了所有类型段描述符的一般格式.   (点击查看大图)图4-13  段描述符通用格式 一个段描述符中各字段和标志的含义如下: (1)段限长字段Limit(Segment limit field):用于指定段的长度.处理器会把段描述

段描述符

; 图示二 ; 高地址………………………………………………………………………低地址 ; | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ; |7654321076543210765432107654321076543210765432107654321076543210| <- 共 8 字节 ; |--------========--------========--------========--------========| ; ┏━━━┳━━━━━━━┳━━━━━━━━━

14课 局部段描述符的使用

前面我们使用的都是全局段描述符表,现在我们来分析局部段描述符表的使用. 什么是LDT(Local Descriptor Table)? 局部段描述符表: 本质是一个段描述符表,用于定义段描述符 与GDT类似,可以看做"段描述符的数组" 通过定义选择子访问局部段描述符表中的元素 局部段描述符的选择子和全局描述符的选择子在结构上是完全一样的,3-15位为描述符索引值,LDT选择子的第二位恒为1,1-0位为RPL. 局部段描述符表就是一段内存,里面的每一项是一个局部段描述符(第0项也是有意义

JavaScript中的对象描述符(属性特性)

我们先创建一个对象: var person = { name: "Nicholas", _job: "Software Engineer", sayName: function(){ alert(this.name); }, get job(){ return this._job; }, set job(newJob){ this._job=newJob; } } 在这个对象中,我们定义了一个name属性和一个_job属性:至于以set和get开头的两处代码,他们共

[保护模式]段寄存器

1.段寄存器结构 段寄存器一共96位,但是可见部分只有16位 Struct SegMent { WORD Selector; //16位段选择子 WORD Attributes; //16位属性 DWORD Base: //32位基址 DWORD Limit: //32位段限长 } 其中红色部分就是段选择子 Selector 2.段寄存器的读写: 读段寄存器: 比如:MOV AX,ES  只能读16位的可见部分 读写LDTR 的指令为:SLDT/LLDT 读写TR的指令为:STR/LTR 写段寄

【译】x86程序员手册18-6.3.1描述符保存保护参数

6.3 Segment-Level Protection 段级保护 All five aspects of protection apply to segment translation: 段转换时会提供以下5个方面的保护: Type checking 类型检验 Limit checking 限长检验 Restriction of addressable domain 可寻址域的限定 Restriction of procedure entry points 程序入口点的限定 Restricti

进入保护模式

本文为<x86汇编语言:从实模式到保护模式> 第11章笔记 以下图2, 图4和图5截自Intel手册 全局描述符表 全局描述符表中存放着段描述符, 每个段描述符8个字节. 为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限), 其值等于表的大小(总字节数) - 1, 因为从偏移0开始. 如