`
xitongyunwei
  • 浏览: 930146 次
文章分类
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics