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