为什么64位可移植可执行文件的入口点地址只有32位?

时间:2016-03-21 17:04:08

标签: winapi linker binaryfiles portable-executable

根据_IMAGE_OPTIONAL_HEADER_IMAGE_OPTIONAL_HEADER64的{​​{3}},AddressOfEntryPoint对于PE32和PE64文件格式都是32位DWORD

为什么PE64文件的AddressOfEntryPoint只有32位?它不应该是64位来覆盖整个虚拟地址空间吗?

1 个答案:

答案 0 :(得分:3)

您链接的文档说:

  

指向入口点函数的指针,相对于图像基址。

相对到基地址,这意味着图像可以位于地址空间的任何位置。

这间接暗示入口点的基址不能超过4GB,但这不是限制。由于其他原因,PE映像的大小不能超过4GB。例如,SizeOfImageDWORD,意味着图片大小限制为4GB。