实验目的

通过对Win32平台下C语言程序中函数调用的分析,熟练掌握Win32平台下利于栈帧进行函数参数传递的方式,以及函数调用与返回过程。

实验内容

#include "stdio.h"

long add(long *a, long *b)
{
long *x, *y;
x= a, y = b;

    return (*x + *y);
}

int main(int argc, char* argv[])
{
    long a = 1, b = 2;

    printf("%d\n", add(&a, &b));

    return 0;
}

实验要求

  1. 在VC2010中,使用release模式编译上述源程序。

  2. 在Win10下使用Ollydbg软件对编译后的执行程序进行动态跟踪调试。

  3. 记录main()函数和add()函数被调用时栈帧的产生,以及调用结束后栈帧的撤销过

实验结果

请在此处绘制本实验的栈帧产生与撤销过程,并且必须以字节为单位,标注OD中的真实地址、地址中相应存放的16进制数,以及标注EBP、ESP的值。

评论