4

我可以将地址计算Segment:OffsetSegment* 0x10 + Offset。但是我如何计算相反的呢?

例如,我如何从0xF4170toF400:0170和 from 0xACF04to 到达ABCD:1234

4

1 回答 1

4

您将需要具有开始的基址或偏移量以及线性地址,因为多个Segment:Offset对可以映射到相同的线性地址。

所以如果我们有段0xF400和线性地址0xF4170,我们得到的偏移量0xF4170 - (0xF400 << 4)0x170


只知道线性地址并没有唯一的解决方案,因此您必须选择将 20 位地址拆分为 16 字节对齐seg部分和字节偏移的约定。一种可能的功能是:

  • Segement = linear >> 4 (前 16 位)
  • offset = linear & 0x0F(低 4 位)

您可以选择 12:8 位的规范形式,为将来扩展更宽的线性地址留出空间。

于 2012-02-27T12:10:45.383 回答