从汇编角度理解volatile

上传者: wwdwwd | 上传时间: 2022-09-19 11:15:47 | 文件大小: 55KB | 文件类型: DOCX
一般对于volatile的解释是这样的:将变量定义为volatile可以防止编译器对变量进行优化,每次均从内存中访问变量,而不是寄存器。既然让编译器优化可以提高访问速度,那为什么又要不用它以及什么时候不用它?其实主要是配合的问题,一个变量可能在寄存器中,也可能在内存中,如果程序只有一个执行流且没有跳转,那么变量不管放到内存还是寄存器,理论上在编译阶段编译器是能够知道变量的具体位置的,使用时就不会出现问题。事实上编译器是通过一个简单的规则来保证的:局部变量一般会放到寄存器中,全局变量在函数开始时必然是操作内存,之后可能是放入寄存器,到函数结束时必然将全局变量的值再写入内存(如果有写的话),这样每次函数调用时全局变量的最新值都在内存中,且都从内存中访问,保证了数据的一致性。但这种一致性在多执行流或有跳转的情况下就有问题了

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明