【问题标题】:Difference between IDE "Visual MASM" and "Easy Code"?IDE“Visual MASM”和“Easy Code”的区别?
【发布时间】: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 可能是一个好的开始。

标签: assembly masm masm32


【解决方案1】:

我是 Visual MASM 的作者,我可以确认最新版本的 Visual MASM 不会生成调试版本。这就是为什么 Visual MASM 目前创建的 EXE 比 Easy Code 更小。

但是,Visual MASM 将有一个选项来启用其用户模式调试器。为了启用调试器,Visual MASM 将为您的程序集应用程序生成调试符号。这将增加目标文件的大小。因此,您将看到一个 Release(非调试)和一个 Debug(带符号)程序集选项。

此外,Windows 下的任何 EXE 都不能小于 1 KB。如果您想要更小的文件,您需要生成 16 位 COM 文件,您也可以在 Visual MASM 中执行此操作。它还取决于您运行的 Windows 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2012-11-14
    • 2021-05-19
    • 2020-09-03
    • 1970-01-01
    • 2018-09-10
    • 2014-10-21
    相关资源
    最近更新 更多