当段界限以4k字节为单位时,实际的段界限 limit = limit * 4k + 0fffh,为什么要加上0fffh呢,这个有点想不明白,不是直接limit*4k字节吗 ?
------解决方案--------------------
就是这么定义的,描述符的G位为1的时候,粒度是4K,那么20位限制如何表达4GB限制呢,显然是1048575 * 4096 + 4095,所以粒度是4K的时候,限制为0表示限制为4K,而不是0K,这跟粒度为1字节的时候不一样。
------解决方案--------------------
实际使用的段界限=(描述符中的段界限值+1)*0x1000-1
这里0x1000即为4K,为什么要+1,因为描述符中的段界限值是从0开始的,如果段界限值是0,那按照楼主的计算公式,那实际段界限也是0哦。所以按照上式来展开计算,得到下面的:
实际使用的段界限=描述符中的段界限值*0x1000+0x1000-1,得到:
实际使用的段界限=描述符中的段界限值*0x1000+*0x0FFF。
就这样喽