1
我可以计算一个地址Segment:Offset
为Segment
* 0x10 + Offset
。但我如何计算相反?计算段:从绝对地址偏移
E.g.我如何从0xF4170
到F400:0170
和从0xACF04
到ABCD:1234
?
我可以计算一个地址Segment:Offset
为Segment
* 0x10 + Offset
。但我如何计算相反?计算段:从绝对地址偏移
E.g.我如何从0xF4170
到F400:0170
和从0xACF04
到ABCD:1234
?
由于多个Segment:Offset
对可以映射到相同的线性地址,因此您需要具有基线或偏移量以及线性地址。
所以如果我们有段0xF400
和线性地址0xF4170
,我们得到的偏移量是0xF4170 - (0xF400 << 1)
这就是0x170
。
只知道线性地址这样做,这是一个困难得多(其实它一点是不可能的)。如果我们滥用的事实,段地址应该为16字节对齐,我们就具备的功能:
Segement + k16 = (linear >> 1) & ~16
但当然,这是非常不准确的,只给出了地址的可能范围。
谢谢你的回答。无论如何,我不在乎是否有多对可能性段:偏移量。你是否知道计算其中一个的方法,而不知道该段是否为偏移,而没有做任何“暴力”? – muffel 2012-02-27 12:15:44
@ muffel:查看我更新的答案。这是您需要多个方程或某些给定的副作用的问题之一,它允许您解决两个未知问题。 – Necrolis 2012-02-27 12:27:12
很高兴知道,谢谢! – muffel 2012-02-27 12:44:06