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

问题描述:

根据_IMAGE_OPTIONAL_HEADER_IMAGE_OPTIONAL_HEADER64definitions,对于PE32和PE64文件格式,AddressOfEntryPoint是32位DWORD为什么64位可移植可执行文件的入口点地址只有32位?

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

+0

部分不能大于4 GB,这是基本的操作系统限制。所以32位就足够了。 –

的文档给你链接,说:

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

作为相对基地址,这意味着该图像可以在地址空间中的任何位置。

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