呃,你是对的,我搞混了。
此CPUID即是我用的CPUID,就是关于获取CPU信息的ops,
但也可以用于序列化指令,我gdb 看了下,cpuid 修改了eax-edx 寄存器。
(gdb) print {$eax,$ebx,$ecx,$edx}
$1 = {0, 1431655024, 1431655024, -7032}
(gdb) c
Continuing.
(0) before cpuid 140737353838536 s 93824992236144 ns
Breakpoint 3, main () at test.c:26
26 printf("(%d) after cpuid %ld s %ld ns\n", ii, tm_now.tv_sec, tm_now.tv_nsec);
(gdb) print {$eax,$ebx,$ecx,$edx}
$2 = {0, 832, 24, 0}
优化导致结果不可预期。
【 在 z16166 的大作中提到: 】
: 啥?你贴的源码,我编译了,看到的cpuid指令机器码就是0F A2啊,跟那个intrinsic函数里的cpuid指令一样
:
--
修改:lambdago FROM 171.82.232.*
FROM 171.82.232.*