我已经阅读了ARM文档,发现在某些地方他们说Cortex M4可以重新排序内存写操作,而在其他地方则表明M4不会这样做。
具体来说,我想知道是否需要使用DBM指令,例如:
volatile int flag=0;
char buffer[10];
void foo(char c)
{
__ASM volatile ("dbm" : : : "memory");
__disable_irq(); //disable IRQ as we use flag in ISR
buffer[0]=c;
flag=1;
__ASM volatile ("dbm" : : : "memory");
__enable_irq();
}