-
-
[求助]为何汇编写出的helloworld这么大呢?
-
发表于:
2013-4-11 18:09
3118
-
[求助]为何汇编写出的helloworld这么大呢?
代码如下:
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.code
szTitle db 'my first ASM program!',0
szCaption db 'This is caption!!',0
main:
invoke MessageBox,NULL,offset szTitle,offset szCaption,MB_OK
invoke ExitProcess,NULL
end main
这只是一个简单的helloworld,但是为何编译出来的exe文件有16kb那么大呢?我用vc6写这么一个helloworld也只有几KB啊? 什么原因呢? 不是汇编的代码更精简么?
解决了,问题在于:
我的电脑上安装了VC6,因此path变量里面有vc6的bin目录,然后我又安装了masm32,而且masm32的bin目录放在了path变量的最后面.
因此,在ml /C /COFF 的时候没有问题,但是在link /SUBSYSTEM:WINDOWS的时候,因为path变量中vc6的bin目录在masm32的bin目录之前,而vc6的bin里面也有一枚link.exe,所以就优先调用了vc6的link,导致编译出来的文件大小不正常.(可是运行正常)
大家要注意啊!
(另外 我发现某安全网站的asm视频教程里面那个讲师也犯了这个错误,嘿嘿.)
[课程]FART 脱壳王!加量不加价!FART作者讲授!