2

私は多くの ASM を理解していません。最近、次のようなインライン gcc asm に出くわしました。

("rdtsc;movl %%eax,%0":"=m"(x)::"ax","dx")

xカウンターの下位 32 ビットを 32ビットの符号なし整数に入れるように見えます。私が理解できないのは、なぜ clobberaxdx. それは同期のためですか、それとも他の理由ですか? 私は多くのrdtsc例を見てきましたが、そのクロバーaxdx.

また、については、ここrdtscを読んだ場合、gccは命令を並べ替えません。それは良いアドバイスであり、命令の並べ替えを防ぐための提案はありますか?memoryrdtsc

ありがとう

4

1 に答える 1