x87648510 发表于 2013-8-1 10:27:13

关于win32汇编的问题

刚学win32汇编 有一些问题 一直想不清楚求大神指点迷津以下是我的代码
这个是我的C++代码
void a()
{
       int a1=100;
       int a2=200;
}
下面是反汇编的代码
    13:void a()
    14:{
01163310push      ebp
01163311mov         ebp,esp
01163313sub         esp,0D8h
01163319push      ebx
0116331Apush      esi
0116331Bpush      edi
0116331Clea         edi,
01163322mov         ecx,36h
01163327mov         eax,0CCCCCCCCh
0116332Crep stos    dword ptr es:
    15:        int a1=100;
0116332Emov         dword ptr ,64h      ;在这里想问的是,把64h放到 中 这个默认的短地址是不是ds?
    16:        int a2=200;                                        ;如果是ds的话那怎么怎么实现局部变量?局部变量不应该是随着
01163335mov         dword ptr ,0C8h       ;函数的结束而死了吗? 如果不是压入栈中就没有随着函数的结束而丢
    17:}                                                         ;失啊很是纠结   
0116333Cpop         edi
0116333Dpop         esi
0116333Epop         ebx
0116333Fmov         esp,ebp
01163341pop         ebp
01163342ret

zer0 发表于 2013-8-1 12:31:52

http://blog.csdn.net/njnu_mjn/article/details/7849522
看看这篇日志,你可能有所领悟~~~~~~~~~
函数中的局部变量在函数返回时, 要被销毁. 但在实际的编译运行过程中, 编译器进行了优化, 执行过程并不按照标准步骤进行.~~~~~~~~

福禄娃娃 发表于 2013-8-1 12:37:28

楼上高手正解,楼主可参照。

x87648510 发表于 2013-8-1 12:56:10

zer0 发表于 2013-8-1 12:31 static/image/common/back.gif
http://blog.csdn.net/njnu_mjn/article/details/7849522
看看这篇日志,你可能有所领悟~~~~~~~~~
函数中 ...

谢谢{:1_1:}

x87648510 发表于 2013-8-1 12:56:50

福禄娃娃 发表于 2013-8-1 12:37 static/image/common/back.gif
楼上高手正解,楼主可参照。

谢谢:lol:{:1_1:}

x87648510 发表于 2013-8-1 13:24:36

zer0 发表于 2013-8-1 12:31 static/image/common/back.gif
http://blog.csdn.net/njnu_mjn/article/details/7849522
看看这篇日志,你可能有所领悟~~~~~~~~~
函数中 ...

解决问题了 ,谢谢你啊   琢磨了好久了 嘿嘿{:1_1:}

zer0 发表于 2013-8-1 18:57:03

x87648510 发表于 2013-8-1 13:24 static/image/common/back.gif
解决问题了 ,谢谢你啊   琢磨了好久了 嘿嘿

好的~~~~~请及时采纳谢谢

ssyss501 发表于 2013-8-2 09:52:51

编译的时候把,VC优化关了,编译出来的就按照你想的那么走了,

x87648510 发表于 2013-8-2 18:19:47

ssyss501 发表于 2013-8-2 09:52 static/image/common/back.gif
编译的时候把,VC优化关了,编译出来的就按照你想的那么走了,

嗯 谢谢也发现这个问题现在的 编译器都智能了自动优化{:1_1:}
页: [1]
查看完整版本: 关于win32汇编的问题