我正在寻找在WindRiver C编译器中禁止指令重新排序的正确和可接受的方法(AKA Diab C(?))。问题是我必须在同一个函数中多次编写硬件寄存器,我不希望优化器重新排序序列,或者更糟糕的是,将多个写入集合到一个中。请不要推荐“volatile”,因为我不想依赖这个看不见且不可靠的先决条件(主要是因为定义可能不在我的控制之下)。我目前正在使用一个空的内联汇编语句:
asm volatile (" ");
作为代理,因为编译器文档说这将阻止重新排序,OTOH可能有一种更常见的方式,WindRiver C的每个体面用户都应该知道。
提前致谢