首页
社区
课程
招聘
[原创]C语言——简单的函数调用过程
发表于: 2011-6-16 12:49 8759

[原创]C语言——简单的函数调用过程

2011-6-16 12:49
8759

说明: 函数太常见了,这里只是对函数的调用过程进行的简单的描述,希望对刚接触的童鞋有点帮助,高手也望不吝指点。

简单函数的过程

void TestFun()
{
    printf("I'm comming!\r\n");
}

int _tmain(int argc, _TCHAR* argv[])
{    
    TestFun();
    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{    
//保存当前的栈信息,以便函数返回时平衡自身栈
01182140  push        ebp  
01182141  mov         ebp,esp 
    TestFun();//函数调用
0118215E  call        TestFun (118100Ah) 
    return 0;
01182163  xor         eax,eax 
}
//Debug版这里有个跳转指令
0118100A  jmp         TestFun (11815E0h)

void TestFun()
{
011815E0  push        ebp  
011815E1  mov         ebp,esp 
    char* lpTest = "I'm comming!";
011815FE  mov         dword ptr [lpTest],offset string "I'm comming!" (11879A0h) 
}
01181608  mov         esp,ebp 
0118160A  pop         ebp  
0118160B  ret   

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了...
文章很简洁,表述很清晰
2011-6-16 12:59
0
雪    币: 223
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享基础性文章

学习,,
2011-6-16 13:12
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
LZ 花了不少心机
用汇编去理解 C/C++ 没错,有时候是个捷径。

不过这样的 c 学习方式会使你走上旁门歪道

倒不如做一系列的逆向学习
2011-6-16 13:13
0
雪    币: 191
活跃值: (130)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
感谢LS的提议,我也是刚刚接触,只是拿出来,希望能多给点意见以便改进自身之不足。

其实所有的语言都是浮云,看雪老大的那个栈才是重点

补充没有说明的部分,关于参数,调用的简单介绍在下面链接1楼。
http://bbs.pediy.com/showthread.php?t=50879
2011-6-16 13:25
0
雪    币: 777
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好的。学习下
2011-6-16 13:33
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
7
语言浮云?要是你只会汇编将来肯定没前途.暂且只谈C语言 VC编译器的情况,那个栈只有函数是_cdecl 和_stdcall调用约定时,并且编译器不做优化才是那样的.语言没学好就看汇编这种方式不好,最终你会高不成低不就.好好学习C语言,达到能随便写写项目的水平,这时在来看逆向你会觉得逆向是浮云,而不是语言.逆向只是手段,如果你当技术来学,而忽略了语言本身,你会失去很多..
2011-6-16 13:36
0
雪    币: 191
活跃值: (130)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
LS上的意思我明白了,非常感谢提醒。不过这里还是要简单的说明下,这里主要讲述函数调用过程,栈的分布情况,语言只是描述的需要。
所有的重点都围绕在那个栈的结构上,调用的过程是怎么变化的,后面的是自己按照理解简单模拟下,加深了对这个调用过程的理解,当然了,我也接触时间短很多东西确实搞不太清方向,所以跟大家交流,感谢各位的意见。
2011-6-16 13:52
0
雪    币: 191
活跃值: (130)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
楼上2位的真正意思我晚上睡觉时好好反思了下。
可能是我太浮躁,只停留在表面一些,没有看的比较长远。
再次感谢,人生路上就需要这样的朋友,来消除毛躁修正bug。
谢谢!

                    五边形
2011-6-17 09:17
0
游客
登录 | 注册 方可回帖
返回
//