首页
社区
课程
招聘
[求助]为何汇编写出的helloworld这么大呢?
发表于: 2013-4-11 18:09 3215

[求助]为何汇编写出的helloworld这么大呢?

2013-4-11 18:09
3215
代码如下:

.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视频教程里面那个讲师也犯了这个错误,嘿嘿.)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3380
活跃值: (1373)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
编译器优化么?
2013-4-11 19:28
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你用的什么编译器啊?
2013-4-12 00:28
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
包含文件多,所以大。
2013-4-12 00:59
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
5
编译器问题。
2013-4-12 09:12
0
游客
登录 | 注册 方可回帖
返回
//