ZHCADC4A September 2011 – March 2014
在裸机动态链接模型下,可选择使用 DSBT 模型。在不使用 DSBT 的情况下,程序具有单个 DP,它指向可执行文件的数据区段基地址(第一个 DP 相对区段)。可执行文件本身能够使用 near DP 相对寻址来引用其自带数据。必须使用 far 寻址模式(far DP 相对寻址或绝对寻址)来寻址库中的数据。这既适用于寻址导入数据的可执行文件,也适用于寻址其自带数据的库(因为 DP 属于可执行文件)。如果没有 DSBT,库就没有 .bss、.neardata 或 .rodata 段。
启用 DSBT 后,每个单独构建的组件都可拥有自己的 DP 相对区段。
在裸机动态链接模型中,也可选择通过基于 GOT 的寻址来寻址与位置无关的数据。如果没有基于 GOT 的寻址,对导入地址的引用将作为绝对地址编码到代码区段中,或者,对于非 DSBT 可执行文件,也可选择作为可执行文件 DP 的偏移量。此类代码无法访问库的数据区段的单独预处理副本,因此,虽然支持单独链接库,但不支持共享库。如果编译的代码不是与位置无关的,则可能需要加载时固定值。
链接器应强制一致地使用 DSBT 和 GOT 模型。