【发布时间】:2013-08-30 14:12:20
【问题描述】:
为什么 PE 文件中的节之间存在对齐?由于可以在 IMAGE_SECTION_HEADER.SizeOfRawData 中指定节的确切大小,我看不出在节之间使用这些“间隙”有任何意义。
在密钥 /filealign 的 MSDN 文档中写道:“有效值为 512、1024、2048、4096 和 8192”。编译器禁止 /filealign:0 有什么原因吗?
【问题讨论】:
-
不知何故,我认为这是对慢得多的磁盘(如软盘)进行优化的产物。 512 是典型的扇区大小。查找和读取会将特定部分的第一个字节放在缓冲区的第一个字节。
-
好吧,我实际上可以使用 /filealign:[number lower than 512] 编译我的源代码,但是当我尝试运行该 PE 文件时它总是以错误告终。
-
我确实觉得这是一个 XY 问题。你真正想解决什么问题(或者你只是好奇)?
-
我只是好奇,因为如果 Windows 加载器编写正确,我看不到使用文件对齐的任何意义。
标签: c++ visual-c++ assembly portable-executable