直接访问物理地址时是否需要使用volatile关键字?

时间:2013-07-08 10:51:57

标签: c memory memory-management bootloader

在启动加载程序代码中,我发现,在访问物理地址时,它们使用volatile关键字。是否有必要使用volatile关键字,即使我们正在访问物理内存地址?

3 个答案:

答案 0 :(得分:2)

只要数据可以更改,您就需要使用“volatile”,而编译器无法知道它。

答案 1 :(得分:1)

这是为了禁用编译器优化并仅获取当前值。只有当前值的意思是系统将获取当前值,即使在前一条指令中使用了同一对象的值。

答案 2 :(得分:0)

是否有任何方法可以在没有编译器知道的情况下更改此物理地址的内容(当编译器只检查本地代码时)?如果是,则必须使用volatile关键字 - 否则您无法确定编译器是否会实际读取内存。

对于物理地址(例如设备寄存器),您确实需要使用volatile关键字。