代码之家  ›  专栏  ›  技术社区  ›  Dor

armcc是否使用-o0优化非易失性变量?

  •  2
  • Dor  · 技术社区  · 14 年前
    int* Register = 0x00FF0000; // Address of micro-seconds timer
    while(*Register != 0);
    

    我应该申报吗 *Register 作为 volatile 使用armcc编译器和-o0优化时?

    换句话说:does-o0优化要求将这类变量限定为 不稳定的 ?(这可能是氧优化所必需的)

    1 回复  |  直到 14 年前
        1
  •  4
  •   Michael Burr    14 年前

    在我看来你应该申报 Register 作为 volatile 不管怎样,因为它是不稳定的。做记号没有坏处 不稳定的 ,因为您依赖于编译器,而不是通过指针优化访问。

    int volatile* Register = (int*) 0x00FF0000;
    

    您不应该依赖编译器优化设置来希望正确编译。我想是忘了做记号吧 不稳定的 适当地在嵌入式C代码上启动优化通常会导致问题开始破裂,这是一个主要原因。