debug模式下不识别汇编修改?

qq_29289253 2017-11-28 04:49:50

变量i前无volatile时,debug和release模式下都是输出10,10,此时是因为直接读取寄存器的原因。
而有volatile时,release模式输出10,32,但debug模式下仍然输出10,10。此处不明白。
有volatile强行读取内存时,debug和release模式下不是应该都输出10,32吗,为什么debug模式下仍然输出10,10?

void main()
{
volatile int i = 10;
int a = i;
printf("\ni=%d", a);


_asm
{
mov dword ptr[ebp - 4], 20h;
}

int b = i;
printf("\ni=%d", b);

getchar();
}
...全文
96 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-11-28
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
  • 打赏
  • 举报
回复
paschen 2017-11-28
因为debug下,还会在栈中压入一些其他信息,mov dword ptr[ebp - 4], 20h;的位置并不是你变量i的位置,改成:mov dword ptr[i], 20h;即可
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-11-28 04:49
社区公告
暂无公告