我可以计算一个地址Segment:Offset
as Segment
* 0x10 +Offset
。但如何计算相反的情况呢?
例如。我怎样才能从0xF4170
to F400:0170
和来自0xACF04
to ABCD:1234
?
您需要具有起始基址或偏移量以及线性地址,作为多个Segment:Offset
对可以映射到相同的线性地址。
所以如果我们有这个段0xF400
和线性地址0xF4170
,我们得到的偏移量是0xF4170 - (0xF400 << 4)
这是0x170
.
仅知道线性地址并没有唯一的解决方案,因此您必须选择一种约定将 20 位地址拆分为 16 字节对齐的地址seg
部分和字节偏移量。一种可能的功能是这样的:
-
Segement = linear >> 4
(前 16 位)
-
offset = linear & 0x0F
(低4位)
您可以选择 12:8 位的规范形式,为将来使用更宽的线性地址进行扩展留出空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)