1. 函数简介
在代码开发过程中,函数是一个必然存在的,它是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时还带有一入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给调用它的程序。
函数主要需要关注两个方向问题:函数参数,函数返回值
2. 从汇编中看函数
函数功能的实现部分
PUSH EBP 提升堆栈,为函数执行提供空间
MOV EBP,ESP
SUB ESP,20
PUSH EBX 保留现场:函数在执行的时候会用到一些寄存器,但这些寄存器中的值很可能会被后面的
PUSH ESI 程序用到,所以要先存储到内存中
PUSH EDI
LEA EDI,DWORD PTR SS:[EBP-20] 向分配的空间填充数据
MOV ECX,16
MOV EAX,CCCCCCCC
REP STOS DWORD PTR ES:[EDI]
MOV EAX,DWORD PTR SS:[EBP+4] 该函数的功能
ADD EAX,DWORD PTR SS:[EBP+C]
POP EDI 恢复现场
POP ESI
POP EBX
MOV ESP,EBP 降低堆栈
POP EBP 恢复栈底数据
RETN 函数执行完毕,返回到调用处
函数的调用部分
PUSH 8 函数的参数
PUSH 1
CALL 0040200A 调用函数