call stack

1、如何在下面的test函数里加入代码可以使程序运行起来输入和输出的相等? 

(环境是vc6Debug方式下)
#include
<stdio.h>
void test()
{
int t;
scanf(
"%d",&t);
在这里加入代码
}
main()
{
int m;
test();
printf(
"m=%d",m);
}

引用 68 楼 hong8292 的回复:
C/C++ code1、//在这里加入代码__asm
  {
      mov eax, [ebp-8]
      push esi
      mov esi,[ebp]
      mov [esi-8],eax
      pop esi
  }

代码如下在VC6中DEBUG模式可以,RELEASE版本不行。。。不知为什么?
void test()
{
int t;
scanf("%d",&t);
//在这里加入代码
__asm
{
mov eax, [ebp]  //取得原调用函数的变量堆栈指针, 根据C和PASCAL约定而不同。。。
push esi
mov esi, eax
mov eax,[ebp-4] //取得现在函数的第一个变量地址的内容
mov [esi-4],eax //把它赋值给 原调用函数的第一个变量
pop esi
}
printf("t pointer:%p",&t);
//  p +=22;//p指向m
//  *p =(int)t;
//我都觉得我很邪恶了,这样的搞法
//一不小心程序会挂的
}


http://topic.csdn.net/u/20080723/20/b82e2cb3-9910-4733-9fdc-7cc26461b663.html?seed=1903815519

你可能感兴趣的:(c,pascal)