函数调用
一、函数运行前

二、调用函数此时PUSH两个参数,然后调用函数
PUSH往栈中压入2和1,每次压栈栈顶的地址都会减4(先减地址,在压栈) CALL 将下一行指令的地址压入栈中,再跳到0040100A这个地址去(先减地址,在压栈)PUSH 2
PUSH 1
CALL 0040100A

三、函数调用后
开栈1、保存原始栈底的位置

2、提升栈底

3、提升栈顶

4、保存现场(保存寄存器的值)

5、清除堆栈中的垃圾数据
其中STOS 的意思是 ,将eax寄存器中的值,给edi寄存器中所存的地址的值,然后edi的地址加4(先压栈,在加4) REP 重复多少次,ecx就是计数器
6、两个参数相加

7、还原现场(还原寄存器的值)

8、还原堆栈

9、返回到调用此函数的下一行地址
eip cup要执行的地址,此处是外平栈

浙公网安备 33010602011771号