gpt4 book ai didi

windows - 如何在部分上使用 fixups 属性?

转载 作者:可可西里 更新时间:2023-11-01 10:57:55 26 4
gpt4 key购买 nike

“修复”应用于部分时究竟做了什么?在一个 fasm 示例中,我发现了以下部分 delcaration,我真的不确定 fixups 属性的作用,我在 fasm 文档中找不到太多关于它的信息。

section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if

最佳答案

这似乎是 bug in how FASM generates PECOFF DLLs 的解决方法. .reloc 部分仅适用于 PECOFF 图像(EXE 和 DLL),并提供允许在任何地址加载图像的重定位(或“修复”)。 (PECOFF 目标文件中使用了不同类型的重定位;这些修正未放在 .reloc 部分中。)

FASM 中的错误是,如果 DLL 不需要任何重定位而不是根本不生成重定位,它将生成一个空的 .reloc 部分。如果有空白部分,Windows 将拒绝加载 DLL(或 EXE)。如果 .reloc 部分没有任何内容,则解决方法通过添加虚拟“基本重定位 block ”来强制非空 .reloc 部分。

显然 FASM 的开发者认为这不是 FASM 中的错误,而是 Windows 中的错误,因此没有修复它。

为了直接回答您的问题,fixups 关键字似乎表明该部分是 FASM 的特殊部分,它用于如上所述的图像重定位。与其他属性不同,它不对应于 PECOFF 图像中使用的部分标志之一,因此它似乎仅由 FASM 在内部使用。

关于windows - 如何在部分上使用 fixups 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37829732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com