Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly IDE之间的区别;视觉MASM“;及;简单代码;?_Assembly_Masm_Masm32 - Fatal编程技术网

Assembly IDE之间的区别;视觉MASM“;及;简单代码;?

Assembly IDE之间的区别;视觉MASM“;及;简单代码;?,assembly,masm,masm32,Assembly,Masm,Masm32,我不熟悉汇编语言 我试图构建一个示例汇编代码(masm32),然后我意识到: 使用Visual MASM时,输出是一个.exe文件,大小为 2,5 KB 使用相同的代码,但使用的是Easy IDE代码的.exe大小 输出文件为12KB 我的问题: 为什么会出现这种差异 是否有一个IDE或一种方法可以比那些IDE更好地最小化输出exe文件的大小 减小.exe文件的大小是否会影响程序的性能 我是Visual MASM的作者,我可以确认最新版本的Visual MASM不会生成调试版本。

我不熟悉汇编语言

我试图构建一个示例汇编代码(masm32),然后我意识到:

  • 使用
    Visual MASM
    时,输出是一个.exe文件,大小为 2,5 KB

  • 使用相同的代码,但使用的是
    Easy IDE代码
    的.exe大小 输出文件为12KB

我的问题:

  • 为什么会出现这种差异

  • 是否有一个IDE或一种方法可以比那些IDE更好地最小化输出exe文件的大小

  • 减小.exe文件的大小是否会影响程序的性能


我是Visual MASM的作者,我可以确认最新版本的Visual MASM不会生成调试版本。这就是为什么VisualMASM此时创建的EXE比Easy代码小

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


此外,Windows下的EXE不能小于1 KB。如果您想要更小的文件,则需要生成16位COM文件,这也可以在Visual MASM中实现。这还取决于您运行的Windows版本

我是Visual MASM的作者,我可以确认最新版本的Visual MASM不会生成调试版本。这就是为什么VisualMASM此时创建的EXE比Easy代码小

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


此外,Windows下的EXE不能小于1 KB。如果您想要更小的文件,则需要生成16位COM文件,这也可以在Visual MASM中实现。这还取决于您运行的Windows版本

可能是对齐方式,4kb以前是一种常见的exe对齐方式(现在更常见的是0.5kb)。程序的大小无关紧要,所以不用担心。您使用的计算机内存为GB,磁盘空间可能为TB或更大。4KB是一种常见的对齐方式,因为如果在页面边界对齐,Windows 98加载二进制文件的速度会稍快一些。这是微软链接器的
/OPT:WIN98
标志。这是VC6中的默认设置。在以前的操作系统和所有以后的操作系统上(基本上除了Windows 98之外),512字节的对齐方式更为合理,因为它节省了空间,而不会带来任何性能损失。这是Microsoft工具链中的
/OPT:NOWIN98
链接器标志。如果这些IDE中有一个已经足够老了,那么它们可能仍然在为Windows 98进行优化。这些数字中有点奇怪的是,据介绍,Easy Code使用文件打包器(UPX)在发布版本中压缩可执行文件,因此它的输出实际上应该比Visual MASM小。也许不同之处在于其中一个输出包含调试信息?您是否正在创建调试版本?您在这些IDE中使用什么设置?没有这些信息,这是一个不可能明确回答的问题;我们所能做的就是推测。好吧,就像我理论上所说的,简单的代码就是用符号生成一个调试构建。这些增加了二进制文件的大小,但使调试更容易。Visual MASM未生成此调试信息。如果您想在Easy代码中降低EXE的大小,那么您需要找到一种方法将IDE切换到“发布”版本。我相信文档中已经包括了所有内容。可能是一个好的开始。可能是对齐,4kb过去是一种常见的exe对齐(现在更常见的是0.5kb)。程序的大小无关紧要,所以不用担心。您使用的计算机内存为GB,磁盘空间可能为TB或更大。4KB是一种常见的对齐方式,因为如果在页面边界对齐,Windows 98加载二进制文件的速度会稍快一些。这是微软链接器的
/OPT:WIN98
标志。这是VC6中的默认设置。在以前的操作系统和所有以后的操作系统上(基本上除了Windows 98之外),512字节的对齐方式更为合理,因为它节省了空间,而不会带来任何性能损失。这是Microsoft工具链中的
/OPT:NOWIN98
链接器标志。如果这些IDE中有一个已经足够老了,那么它们可能仍然在为Windows 98进行优化。这些数字中有点奇怪的是,据介绍,Easy Code使用文件打包器(UPX)在发布版本中压缩可执行文件,因此它的输出实际上应该比Visual MASM小。也许不同之处在于其中一个输出包含调试信息?您是否正在创建调试版本?您在这些IDE中使用什么设置?没有这些信息,这是一个不可能明确回答的问题;我们所能做的就是推测。好吧,就像我理论上所说的,简单的代码就是用符号生成一个调试构建。这些增加了二进制文件的大小,但使调试更容易。Visual MASM未生成此调试信息。如果您想在Easy代码中降低EXE的大小,那么您需要找到一种方法将IDE切换到“发布”版本。我相信文档中已经包括了所有内容。这可能是一个好的开始。