https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112513
Alexander Grund <alexander.gr...@tu-dresden.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |FIXED --- Comment #2 from Alexander Grund <alexander.gr...@tu-dresden.de> --- I'm having trouble understanding the exact syntax of `asm`. It looks like `a(...)` in the input/output list refers to read/write of the EAX register and "b" for EBX etc., doesn't it? But in the clobber list I'd need to use `"eax"`, not a..d. I haven't been able to confirm this via the docs (https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Clobbers-and-Scratch-Registers). I.e. I would have expected to be able to use the same "a".."d" there too. Anyway if I understand you correctly the correct instruction would be: `asm volatile("cpuid" : "=a" (cpuid1.val) : "a" (1) : "ebx", "ecx", "edx", "memory");` Did I got that right?