我正在 MIPS 机器上调试 NUMACTL。在 numa_police_memory() API 中,我们有:
void numa_police_memory(void *mem, size_t size)
{
int pagesize = numa_pagesize_int();
unsigned long i;
for (i = 0; i < size; i += pagesize)
asm volatile("" :: "r" (((volatile unsigned char *)mem)[i]));
}
似乎“asm volatile("" :: "r" (((volatile unsigned char *)mem)[i]));" 用于读取 VM,以便将先前 mmap 应用的所有内存分配到某些特定的物理内存上。但是这个 asm 代码是如何工作的呢?我看不懂汇编语言!为什么第一个双引号是空的???
谢谢