volatile相关知识
2017-08-02 20:30
183 查看
volatile的作用 作为指令关键字, 确保本条指令不会因编译器的优化而省略,要求每次直接读值.非常典型的就是寄存器的值可能被人为的从硬件上改变,所以必须要求每次直接读值。 简单地说就是防止编译器对代码进行优化,比如程序: XBYTE[2]=0x55; XBYTE[2]=0x56; XBYTE[2]=0x57; XBYTE[2]=0x58; 如果对外部硬件的上述四条语句分别表示不同的操作, 会产生四种不同的动作,那么编译器就不能像对待纯粹的程序那样对上述四条语句进行优化只认为XBYTE[2]=0x58,而忽略前三条语句,并且只产生1条机器码。如果XBYTE用volatile修饰过,此时编译器会逐一的进行编译并产生相应的4条机器码。 再详细解释一下:定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
相关文章推荐
- Volatile相关的一些底层知识
- Volatile相关知识
- Volatile相关知识
- Volatile相关知识
- Volatile相关知识
- Volatile相关知识
- volatile与synchronized 相关知识小结
- Android ble 4.0相关知识总结
- Linux 下 LVM 相关知识 (动态增减LVM,快照)附图...
- H264相关知识自总结
- 自做音乐播放器涉及到的相关知识
- linux 网络编程相关知识
- grunt 相关知识
- 【nand】NAND Flash闪存坏块的相关知识
- 交易性金额资产 相关知识
- TCP-IP 相关基础知识备忘
- 关于ListView中在使用BaseAdapter的相关知识,convertView之类的,这是我看过最清楚明白的一篇了,你知道吗?
- ubuntu中软件安装相关知识(deb、dpkg、apt-get)
- Java相关基础知识
- GCC 编译过程及相关的知识