在引导加载程序代码中,我发现它们在访问物理地址时使用了 volatile 关键字。即使我们正在访问物理内存地址,是否有必要使用 volatile 关键字?
问问题
144 次
3 回答
2
每当数据可以更改时,您都需要使用“volatile”,而编译器无法知道它。
于 2013-07-08T10:58:52.577 回答
1
这是为了禁用编译器优化并仅获取当前值。当前值的含义仅是系统将获取当前值,即使在之前的指令中使用了来自同一对象的值。
于 2013-07-08T11:03:30.080 回答
0
有什么方法可以在编译器不知道的情况下更改此物理地址的内容(当编译器仅检查您的本地代码时)?如果是,那么您必须使用 volatile 关键字——否则您无法确定编译器是否会真正读取内存。
对于物理地址,例如设备寄存器,您确实需要使用 volatile 关键字。
于 2013-07-08T10:57:29.333 回答