私は多くの ASM を理解していません。最近、次のようなインライン gcc asm に出くわしました。
("rdtsc;movl %%eax,%0":"=m"(x)::"ax","dx")
x
カウンターの下位 32 ビットを 32ビットの符号なし整数に入れるように見えます。私が理解できないのは、なぜ clobberax
とdx
. それは同期のためですか、それとも他の理由ですか? 私は多くのrdtsc
例を見てきましたが、そのクロバーax
とdx
.
また、については、ここrdtsc
を読んだ場合、gccは命令を並べ替えません。それは良いアドバイスであり、命令の並べ替えを防ぐための提案はありますか?memory
rdtsc
ありがとう