+ -
当前位置:首页 → 问答吧 → 32位cpu的寻址问题

32位cpu的寻址问题

时间:2011-06-22

来源:互联网

为什么粒度位为1(G=1)那么段对应的线性地址空间为“基地址+段界限*4K+fffH”,如果粒度位为0(G=0)线性地址空间为“基地址+段界限*4K”不用加fffh,请问fffh是什么?
我的问题来自《80x86汇编语言程序设计教程》的第378页。

作者: sdgggvsert4   发布时间: 2011-06-22

一、段界限有20位,当粒度位(G)为0时,段界限以字节为单位,
20位界限范围为1个字节到1M字节,增量为1个字节;
例如:BaseAddr=56781234,Limit=0,G=0
该描述符描述的段的长度只有一个字节,线性地址为56781234+0;
Limit=0表示的是段的界限为0,即基地址本身一个字节;
如果limit=2^20,则段的访问范围是:
base+0,base+1,...,base+2^20共1M范围;

二、当粒度位(G)为1时,段界限以4k字节为单位,
20位界限范围为4k字节到4G字节,增量为4k字节;
例如:BaseAddr=12345000h,Limit=0,G=1
该存储器的线性地址空间从12345000h开始,
到12345fffh结束,长度为4k字节

作者: leetow2003   发布时间: 2011-06-22