-
在保护模式下,对每个段的内存访问的偏移量都不能超过描述符中声明的段的偏移量
-
对于数据段和代码段,实际使用段界限为允许访问的最高端地址,对于栈段,实际使用的段界限就是不允许访问的最低端地址
-
当段的粒度以4KB为单位,描述符的实际段界限为:
(描述符的段界限 + 1) * 4KB - 1 = 描述符的段界限 * 4KB + 0xFFF 描述符的段界限 + 1可以得出4KB的个数,乘以4KB后,就能得出这个段的大小,而偏移是从0开始的,该段的最大 偏移量为该段所占内存的大小 - 1,所以段界限的值为(描述符的段界限 + 1) * 4KB - 1; -
存储器的保护
- 数据段: 0 <= (EA + 操作数大小 - 1) <= 实际使用的段界限,EA表示有效内存访问地址
- 代码段: 0 <= (EIP + 指令长度 - 1) <= 实际使用的段界限
- 栈段: 实际使用的段界限 + 1 <= ESP - 操作数长度 <= 0xFFFFFFFF
-
描述符的类别需要与段寄存器的用于匹配
本文由博客一文多发平台 OpenWrite 发布!