【发布时间】:2017-06-26 16:43:28
【问题描述】:
我是汇编语言的新手。
我试图构建一个示例汇编代码 (masm32),然后我意识到:
-
当使用
Visual MASM时,输出是一个.exe文件,大小为 2.5 KB。 -
使用相同的代码,但
Easy IDE Code的大小为 .exe 输出文件为 12 KB。
我的问题:
-
为什么会出现这种差异?
-
有没有比那些IDE更好的可以最小化输出exe文件大小的IDE或方法?
-
减小.exe文件的大小会影响程序的性能吗?
【问题讨论】:
-
可以是对齐,4kb以前是常见的exe对齐(现在0.5kb比较常见)
-
程序的大小无关紧要,所以不要担心。您正在使用具有千兆字节 RAM 和 TB 或更多磁盘空间的计算机。
-
4 KB 是一种常见的对齐方式,因为 Windows 98 加载二进制文件的速度会稍微快一些,如果它们在页面边界上对齐的话。那是微软链接器的
/OPT:WIN98标志。这是 VC 6 中的默认设置。在以前的操作系统和所有后来的操作系统(基本上所有 但 Windows 98 的操作系统)上,512 字节对齐更明智,因为它可以节省空间而不引入任何性能惩罚。那是 Microsoft 工具链中的/OPT:NOWIN98链接器标志。如果其中一个 IDE 足够老,它们可能仍在针对 Windows 98 进行优化。 -
这些数字有点奇怪的是,根据what I see online,Easy Code 使用 file packer (UPX) 来压缩 Release 版本中的可执行文件,因此它的输出实际上应该小于 Visual MASM。也许不同之处在于这些输出之一包含调试信息?您是否正在创建调试版本?您在这些 IDE 中使用了哪些设置?没有这些信息,这是一个不可能明确回答的问题;我们所能做的就是推测。
-
好的,就像我推测的那样,Easy Code 正在生成带有符号的调试版本。这些会增加二进制文件的大小,但会使调试更容易。 Visual MASM 不会生成此调试信息。如果您想在 Easy Code 中减小 EXE 的大小,那么您需要想办法将 IDE 切换为“发布”构建。我确信这一切都包含在文档中。 The tutorial I linked 可能是一个好的开始。