x86架构中的保护模式

        在x86架构中所谓保护模式其实就是段的存储方式能够达到一种保护机制。也正因为有了保护模式(段的存储方式)所以才会有特权模式,以及后面的多任务之说;

        在实模式下段的存储很简单,就是代表一个段基地址;如:ds(ds=0x7c00),那么数据段的基地址就是0x7c00;再比如:ds:ax(ds=0x0000;ax=0x7c00)那么段基地址就是0x00;线性地址(物理地址)就是:(ds * 16) + ax;在实模式下给段基地址赋值也非常简单,直接用通用寄存器赋值实际物理基地址就可以。如:mov ax , 0x7c00;mov ds , ax;就可以了;

        在保护模式下段地址却没有那么单纯了,他是有全局描述符表来提供的(其实可以认为是多级存储段地址);在保护模式下所有段地址都是集中在全局描述符表中定义的(忘记说明下,在保护模式下地址也是以段为基础的,这是他的兼容性;当然也可以把所有的地址都当作一个段,这就叫内存的平坦模式);当你想引用某个段时,比如:mov ds , ax ;ax则不再是地址了,而是一个选择子,一个索引号,表示该段在全局描述符表中的第几个位置;最后由处理器找到这个位置,然后把该位置下的段描述符加载到ds中去。

        ------------------------------------------------------------------------全局描述符格式--------------------------------------------------------------------------------------

        全局描述符表GDT(global descriptor table)是有多个全局段描述符构成的,可以定义在随意位置(最好定义在地址空间1MB内,因为首先要有实模式下进入保护模式,而在实模式下所能查找的地址只有20位,也即是1MB);下面是全局段描述符格式(一直说全局描述符,是因为有与其相对应的局部描述符LDT):

        

        下面32位是低地址,上面32位是高地址;大概说明下各个字段表示的意思:

        段基地址:分三部分,0~15的,0~23的,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值