我正在尝试创建一个 x86-64 Windows COFF 对象文件,但我并不完全理解https://docs.microsoft.com/en-us/windows/win32/debug/pe中描述的不同类型的重定位-格式#x64-处理器。具体来说,我不确定做什么IMAGE_REL_AMD64_REL32
(包括 _* 变体)IMAGE_REL_AMD64_SREL32
、IMAGE_REL_AMD64_PAIR
和IMAGE_REL_AMD64_SSPAN32
做什么。他们有一些文档,但描述性不够,我找不到任何引用这些的外部资源。更准确地说,我不知道“跨度相关值”是什么意思,也不知道 REL32 到底是什么意思。我非常感谢有关此的任何信息。
编辑:好的,经过一番思考,我了解到 REL32 用于 RIP 相对寻址,而变体用于地址相对于指令开头的位置偏移量且符号指向其开头的情况。我仍然想知道 SREL32、PAIR 和 SSPAN32 是干什么用的……