我不太了解 ASM。我最近遇到了内联 gcc asm,内容如下:
("rdtsc;movl %%eax,%0":"=m"(x)::"ax","dx")
在我看来,这似乎将计数器的低 32 位放入x32 位无符号整数中。我不明白的是你为什么要破坏ax和dx. 这是为了同步,还是出于其他原因?我见过很多rdtsc例子,但从来没有那种破坏性的ax和dx.
另外,关于,我在这里rdtsc读到,如果你破坏然后 gcc 不会重新排序指令。这是个好建议吗?您对防止重新排序指令有什么建议吗?memoryrdtsc
谢谢