如何使用 CPUID 作为序列化指令?

How to use CPUID as a serializing instruction?

CPUID 可用作序列化指令,如 here and here 所述。在 C++ 中以这种方式使用它的 minimal/simplest asm 语法是什么?

// Is that enough?
// What to do with registers and memory?
// Is volatile necessary?
asm volatile("CPUID":::);

您有没有使用围栏操作的原因?如果目标是序列化一段代码,你可以做类似

的事情
    asm __volatile__ (
" mfence \n"
" lfence \n"
);
Your code
asm __volatile__ (
" mfence \n"
" lfence \n"
);