- どういう
rep; nop意味ですか? pause指導と同じですか?rep nop(セミコロンなし)と同じですか?- 簡単な
nop指示との違いは何ですか? - AMDプロセッサとIntelプロセッサでは動作が異なりますか?
 - (ボーナス)これらの指示の公式文書はどこにありますか?
 
この質問の動機
別の質問のコメントでいくつか議論した後rep; nop;、x86(またはx86-64)アセンブリで何を意味するのかわからないことに気付きました。また、ウェブ上で適切な説明を見つけることができませんでした。
これrepは、「次の命令cx回数を繰り返す」ことを意味するプレフィックスであることを私は知っています(または、少なくとも、古い16ビットx86アセンブリではそうでした)。これによると、ウィキペディアでの集計表、それが思わrepだけで使用することができmovs、stos、cmps、lods、scas(多分、この制限は、新しいプロセッサ上で削除されました)。したがって、rep nop(セミコロンなしで)nop操作cx時間を繰り返すと思います。
しかし、さらに調べてみると、さらに混乱しました。これは、と思われるrep; nopとpause まったく同じオペコードにマップし、pauseちょうどより少し異なる振る舞いを持ってnop。2005年からのいくつかの古いメールは異なることを言っていました:
- 「力を入れすぎないように」
 - 「2バイトのエンコーディングだけで「nop」と同等です。」
 - 「それはIntelの魔法です。それは「いや、でも他のHT兄弟を走らせて」のようなものです。」
 - 「Intelでは一時停止し、Athlonでは高速パディングです」
 
これらの異なる意見で、私は正しい意味を理解することができませんでした。
これは、Linuxカーネル(i386とx86_64の両方)でこのコメントとともに使用されています。同じコメントで、BeRTOS/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */でも使用されています。