注册 登录
编程论坛 汇编论坛

反汇编了一个console版 windows程序时发现的一个小问题

kamuli 发布于 2011-08-07 20:18, 755 次点击
.text:00401010 main            proc near               ; CODE XREF: _mainj
.text:00401010
.text:00401010 var_40          = byte ptr -40h
.text:00401010
.text:00401010                 push    ebp
.text:00401011                 mov     ebp, esp
.text:00401013                 sub     esp, 40h
.text:00401016                 push    ebx
.text:00401017                 push    esi
.text:00401018                 push    edi
.text:00401019                 lea     edi, [ebp+var_40]
.text:0040101C                 mov     ecx, 10h
.text:00401021                 mov     eax, 0CCCCCCCCh
.text:00401026                 rep stosd
.text:00401028                 xor     eax, eax
.text:0040102A                 pop     edi
.text:0040102B                 pop     esi
.text:0040102C                 pop     ebx
.text:0040102D                 mov     esp, ebp
.text:0040102F                 pop     ebp
.text:00401030                 retn
.text:00401030 main            endp


VC6.0 编译的,里面就是一个 main空函数
其中这句  .text:00401013                 sub     esp, 40h    中的   40h 空间干嘛用去了??随便生产一个console程序都有这么个空间,一直不明白
4 回复
#2
zklhp2011-08-07 22:23
Debug模式的罢 Release的呢 加优化参数呢?
#3
kamuli2011-08-08 11:10

嗯,是debug模式,默认编译选项,
再继续追问
#4
kamuli2011-08-08 11:27

按照大大的提醒,编译了一个Release版本的  console,貌似这个 40h的空间就没出现了,猜是跟 编译选项有关了,

那能不能说说Debug版多出这个40h来做什么??里面初始化还都是 0xCCCCCCCCh  就是 CCh指令,这是断点丫,
#5
zklhp2011-08-08 22:13
那能不能说说Debug版多出这个40h来做什么??

不知道。。

里面初始化还都是 0xCCCCCCCCh  就是 CCh指令,这是断点丫

是为了能在执行堆栈中指令时报错 就是cc int 3

这个是VC DEBUG模式的特征 呵呵
1