我正在使用硬件寄存器控制DMA,并在工作中查看其他代码,我发现它们使用数据存储器/同步屏障指令(dmb()和dsb()),然后尝试从{{3} }。我使用的平台是基于ARM的体系结构。
在代码中,我看到它们是这样实现的:
/* Data Synchronization Barrier */
#define dsb() __asm__ __volatile__ ("dsb" : : : "memory")
/* Data Memory Barrier */
#define dmb() __asm__ __volatile__ ("dmb" : : : "memory")
两者之间有什么区别?我无法分辨出差异。