码迷,mamicode.com
首页 > 其他好文 > 详细

volatile关键字是什么意思

时间:2018-09-23 13:33:17      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:地址   ima   图片   内存   com   编译   执行   int   分享图片   

我写了一段简单的对比代码并分别用vs2017以release方式编译然后用IDA观察汇编代码,如下图所示:

代码1

int a=5;

printf("%d",a)

 

代码2

volatile int a =5;

printf("%d",a);

技术分享图片

 左边是代码1的汇编代码,右边是代码2的汇编代码。

左边由于 编译器发现a的值是5,然后printf里面有一个a,然后根据等量代换直接就把a的值设置为5了。其实这是一种优化手段,能执行一句代码为什么要执行两句代码呢,是吧。

右边由于给a加上了volatile关键字,就是告诉编译器不要把这个变量优化掉了,该从哪里取数据就从哪里取数据。由于5这个数是存放在了[ebp-4]这个地址开始的内存单元处,所以传递参数的时候也是直接把这个地址的数据给传递进去了。

 

所以volatile关键字的意思就是 ,教练,请不要优化我啊。

 

volatile关键字是什么意思

标签:地址   ima   图片   内存   com   编译   执行   int   分享图片   

原文地址:https://www.cnblogs.com/yfish/p/9692356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!