- とは
rep; nop
どういう意味ですか? pause
指導と同じですか?rep nop
(セミコロンなし)と同じですか?nop
簡単な説明書との違いは何ですか?- AMD プロセッサと Intel プロセッサでは動作が異なりますか?
- (おまけ) これらの手順の公式ドキュメントはどこにありますか?
この質問の動機
別の質問のコメントでいくつか議論した後rep; nop;
、x86 (または x86-64) アセンブリの意味がわからないことに気付きました。また、ウェブ上で適切な説明を見つけることができませんでした。
それが「次の命令を繰り返す」rep
ことを意味する接頭辞であることは知っています(または、少なくとも古い16ビットx86アセンブリではそうでした)。Wikipediaのこの要約表によると、、、 、でのみ使用できるようです(ただし、この制限は新しいプロセッサでは削除された可能性があります)。したがって、 (セミコロンなしで)操作を繰り返すと思います。cx
rep
movs
stos
cmps
lods
scas
rep nop
nop
cx
しかし、さらに検索した後、私はさらに混乱しました。rep; nop
andはpause
まったく同じ opcodeにマップされているようで、 . 2005 年からのいくつかの古いメールには、別のことが書かれていました。pause
nop
- 「力を入れすぎないように」
- 「2バイトエンコーディングだけで「nop」と同等です。」
- 「それはインテルの魔法です。それは「いいえ、他のHT兄弟を実行させてください」のようなものです」
- 「インテルでは一時停止、Athlon では高速パディングです」
これらの異なる意見で、正しい意味を理解できませんでした。
これは Linux カーネル ( i386とx86_64の両方) で使用されており、次のコメントがあります:同じコメントで BeRTOS/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
でも使用されています。