段偏移对bs段描述符

时间:2013-10-29 07:46:14

标签: assembly x86 protected-mode real-mode memory-segmentation

我很难理解8088中用于物理地址计算的段偏移对与32位处理器中的段描述符之间的差异。

任何解释都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

16位CPU只能处理64kB的内存。为了扩展内存范围,引入了段,基本上定义了pchyscak可用内存中64KB窗口的基址。

要获取此指针指向的pyhscial地址,您必须将段值乘以10h(16)并添加偏移地址。即。如果你有像

这样的地址
145A:67B1

 145A0   (+10h or << 4)
+ 67B1
------
 1AD51   <- Physical memory address

保护模式描述符类似于这样的段,但具有附加信息。 它的长度可以达到1-64KB(x286),以及有关prvilige级别和存在的信息。权限级别用于使操作系统更安全,与用户空间无关,存在标志用于虚拟内存。

在386上,范围被扩展,因此一个段现在可以达到1MB并且添加了粒度,因此段现在是4096块的倍数,从而将段大小扩展到4GB。

描述符中的另一个属性是将段设置为16位或32位模式,这样16个代码仍然可以工作。