为什么64位可移植可执行文件的入口点地址只有32位?
问题描述:
根据_IMAGE_OPTIONAL_HEADER
和_IMAGE_OPTIONAL_HEADER64
的definitions,对于PE32和PE64文件格式,AddressOfEntryPoint
是32位DWORD
。为什么64位可移植可执行文件的入口点地址只有32位?
为什么AddressOfEntryPoint
对于PE64文件只有32位?不应该是64位来覆盖整个虚拟地址空间吗?
答
的文档给你链接,说:
的指针入口点函数,相对于映像基址。
作为相对基地址,这意味着该图像可以在地址空间中的任何位置。
这样做间接暗示入口点不能超过4GB的基地址的偏移量,但这不是限制。由于其他原因,PE映像的大小不能超过4GB。例如,SizeOfImage
是DWORD
,这意味着图像大小限制为4GB。
部分不能大于4 GB,这是基本的操作系统限制。所以32位就足够了。 –