lea 0x0(%esi),%esi
結果はなく、単にスペースを埋めているだけだと思います。これは本当ですか?
そのNOP。%esiと0x0の内容を追加し、結果を%esiに入れます。誰かが不器用なコードジェネレーターを持っているか、Nバイトを埋める必要があります。この命令は適切なサイズです。
LEA命令は非常に高速(通常は1クロック)で実行されるため、これはNnopsよりもはるかに優れています。
x86はそれなりに風変わりで、さまざまな命令があり、事実上何も実行せず、異なるバイト数を埋めます。異なる長さの他の役に立たない命令を見つけるかもしれません。長いが1クロック以下で実行される命令を見つける傾向があります。
AMD x86-64マニュアルには、NOPに何を使用すべきかについていくつかの提案があります。彼らは、プレフィックスオペコードの1つが実際のNOP、IIRCの前に何度も繰り返されることを示唆しています。このようなプレフィックスオペコードは、命令フェッチエンジンによって非常に迅速に消費されます。ほとんどの場合、それらのコストは、命令の実行時間ではなく、命令のプリフェッチに隠されています。