【发布时间】:2024-01-22 22:08:01
【问题描述】:
让我们假设以下情况: 在以 2 个字节编码的地址引用中存在对数据的跳转或引用。现在,当静态链接时,重定位会发生,因此新地址不适合 2 个字节——也许它需要 4 个字节。
我假设链接器将重写代码,可能使用不同的指令,并使用 4 个字节作为新地址。
然后链接器是否需要更新当前段/节的大小,并将所有更远的地址更新相同的偏移量(本例中为 +2 字节)?
【问题讨论】:
标签: linker static-linking
让我们假设以下情况: 在以 2 个字节编码的地址引用中存在对数据的跳转或引用。现在,当静态链接时,重定位会发生,因此新地址不适合 2 个字节——也许它需要 4 个字节。
我假设链接器将重写代码,可能使用不同的指令,并使用 4 个字节作为新地址。
然后链接器是否需要更新当前段/节的大小,并将所有更远的地址更新相同的偏移量(本例中为 +2 字节)?
【问题讨论】:
标签: linker static-linking
引用外部符号的机器指令不能使用缩写形式,其中位移或立即操作数被编码为一个字节(在运行时可扩展)而不是完整的字。
链接器并不那么聪明地重新编译曾经组装的段(至少我写的那个不是:-)
【讨论】: