两个不同的远指针如何包含两个不同的地址但引用相同的内存位置?

时间:2017-05-14 03:11:03

标签: c pointers assembly x86 microprocessors

我在一本书中遇到过这个问题 - 两个不同的指针可以包含两个不同的地址,但是指的是内存中相同的物理位置。答案是“”。但是,对于涉及 Near Huge 指针的相同问题,答案是' NO '。

P.S。不要抛弃这个问题,因为Far,Near和巨大的指针现在已经过时了。

1 个答案:

答案 0 :(得分:3)

要使用far指针,您必须使用原始的80x86芯片或兼容模式下的现代芯片。 far指针由段号和偏移量组成,但不同的段号指向重叠的地址,因此段号和偏移量的不同组合可以指向相同的物理地址。

将段号乘以16并添加偏移量以生成物理地址。因此:

 segment     offset        address
 0x100       0x0030        0x1030
 0x101       0x0020        0x1030