【发布时间】:2008-12-09 11:54:19
【问题描述】:
根据this article,由于代码的 JIT 编译,.NET 程序集不需要变基。文章称:
“JIT 编译的代码没有变基问题,因为地址是在运行时根据代码在内存中的位置生成的。此外,MSIL 很少受到基地址未命中的影响,因为 MSIL 引用是令牌-based,而不是基于地址。因此,当使用 JIT 编译器时,系统对基地址冲突具有弹性。"
但是,我注意到 VS2008 将默认的 0x0400000 基地址分配给所有程序集(项目属性 > 构建 > 高级),如果我为我的进程执行 listdlls /r,我的所有 .NET 程序集实际上都是默认重新设置的。
如果我自己分配地址,则不会进行变基。
我的问题是:在这种情况下,什么是 rebase 以及为什么?
编辑:我应该补充一点,我不是在谈论 NGen 的程序集。
【问题讨论】:
标签: .net assemblies rebasing base-address