从物理地址计算逻辑地址(x86)

时间:2013-05-07 12:54:54

标签: x86 computer-architecture x86-16 16-bit

据我所知,物理地址是通过将段地址(16位)左移4次并将其与16位偏移地址相加来计算的。 我的问题是,如果两组不同的段:偏移地址值给出相同的结果 例如。对于200A:B608和2138:A328

200A0

+ B608


2B6A8


21380

+ A328


2B6A8


两者都给出相同的结果!!

现在,这是否意味着他们指向相同的物理地址(如果是这样,如何?),

或者物理地址是否不是以上述方式计算的?

或者,如果它有效,那我怎样才能得到段:从物理地址返回的偏移地址(这可能吗?)

1 个答案:

答案 0 :(得分:2)

在实地址模式下,段选择器确实向左移位4位,然后加到偏移量以形成20位线性地址(在此模式下与物理地址相同)。

显然,这意味着不同的段:偏移对可以被转换为相同的物理地址(正如启用了寻呼的受保护模式中的不同线性地址可以被转换为相同的物理地址)。由于逻辑地址和线性地址之间没有1:1映射,因此您可以从线性地址获得的唯一一项是转换为它的一组segment:offset对。

您可以在 Intel手册,第3B卷,第20.1.1节中找到更详细的说明。

相关问题