关于简单C内嵌汇编代码


#define __io_bw()   __asm__ __volatile__("fence w,o" : : : "memory");
#define __io_aw()   do {} while (0)

void static io_write64_raw( volatile void *addr,u64 val)
{
    __io_bw();
    asm volatile("sd %0, 0(%1)" : : "r" (val), "r" (addr));
    __io_aw();
}

不太理解这组汇编代码在执行什么,gui求da lao讲解下

https://zhuanlan.zhihu.com/p/372433134
__io_bw() 是用来强制同步高速缓存(cache)与内存(memory)中的数据。
__io_aw()是用来等待同步更新完成的空运行指令。
CPU为了提高内存读写数据速度,一般会在两者之间加上高速缓存(cache)。假如cache与memory数据不同步,会导致程序异常。