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();
}
...全文
121 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵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;即可

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧