| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖
标题:[求助] 堆栈平衡为什么会出错
只看楼主 加入收藏
oicq
Rank: 1
等 级:新手上路
帖 子:34
专家分:1
注 册:2010-9-22
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:3 
[求助] 堆栈平衡为什么会出错
#include <stdio.h>
_declspec(naked)int _stdcall FuctAddx(int aaaz,int bbbz)   
{
   

    printf("%d\n",aaaz);
    printf("%d\n",bbbz);

    __asm
    {
         add esp, 80
   
    }

    __asm ret 0x8;
   
}

int __stdcall myadd(int aaaz,int bbbz)
{
   
    __asm
    {
        jmp FuctAddx
    }
    return 0;
   
}

int main()
{
   
    myadd(309,206);
    return 0;
}

搜索更多相关主题的帖子: 309 include return 平衡 
2011-09-26 16:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
你能确定80是真确的吗?(我估计你绝对不能)
如果能,直接调用 FuctAddx 试试看,看看esp对不对
2011-09-26 17:04
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:10 
楼上说的有道理。。
2011-09-26 17:15
oicq
Rank: 1
等 级:新手上路
帖 子:34
专家分:1
注 册:2010-9-22
收藏
得分:0 
回复 2楼 rjsp
我看了那个80 是弹出这几个压的栈      add esp , 80  用 vc 6.0 debug版本下出错   release版本下就能正常运行
00401070 > > \55            PUSH EBP                                 ;  myadd
00401071   .  8BEC          MOV EBP,ESP
00401073   .  83EC 40       SUB ESP,40
00401076   .  53            PUSH EBX
00401077   .  56            PUSH ESI
00401078   .  57            PUSH EDI
00401079   .  8D7D C0       LEA EDI,DWORD PTR SS:[EBP-40]
0040107C   .  B9 10000000   MOV ECX,10
00401081   .  B8 CCCCCCCC   MOV EAX,CCCCCCCC
00401086   .  F3:AB         REP STOS DWORD PTR ES:[EDI]
00401088   .^ E9 78FFFFFF   JMP number.00401005                          // 跳转到FuctAddx函数



[ 本帖最后由 oicq 于 2011-9-26 18:30 编辑 ]

                                                                  D.神罗天征
2011-09-26 18:29
快速回复:[求助] 堆栈平衡为什么会出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017139 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved