【问题标题】:How to calculate the target physical address given the base address and the memory如何在给定基地址和内存的情况下计算目标物理地址
【发布时间】:2012-06-20 23:50:59
【问题描述】:

所以鉴于我有一台 64 位机器。我知道我的程序加载的地址的内存是)

0x8000:0000 and 

我需要找到目标内存地址,从 0x8000:0000 开始,我之间至少有 512 MB。

那么我如何找出这个目标内存是什么?

我所做的计算是 8000:0000 + 0x20000000 = 结果是目的地。但我不完全确定它是否正确。所以我在这里需要一些帮助。谁能帮我解决这个问题?

【问题讨论】:

  • 您到底想完成什么?您在这里可以忽略很多事情。虚拟地址空间、分页、分段等
  • @JonathonReinhart 我想找出这个内存地址,我可以在其中写入一些模式进行测试。但问题是我需要找到可以安全地编写这些测试模式的目的地。所以我知道 0X8000:0000 地址之后的 512 MB 是安全的。但是我需要找到确切的地址,以便我可以明确地使用内存地址
  • 我想我的问题是,你从哪里得到这个地址(特别是这个符号)?
  • @JonathonReinhart 我从技术参考手册中的系统内存映射中得到了这个地址。这 512 MB 是我出于某种目的设置的限制

标签: 64-bit hex offset memory-address base-address


【解决方案1】:

当与segmented memory architecture 一起使用时,0x8000:0000 之类的东西通常用于以段:偏移表示法表示地址。这就是你在这里处理的吗?如果是这样,0x8000:0000 = 0x80000。 0x80000 + 0x20000000 = 0x20080000。

【讨论】:

    猜你喜欢
    • 2020-04-30
    • 2011-10-20
    • 2013-05-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多