6

この記事では、各レジスタには意図された目的があり、さらに重要なことに、

Intel のエンジニアがオリジナルの 8086 プロセッサを設計したとき、各レジスタには特別な目的がありました。彼らは命令セットを設計する際に、各レジスタが実行すると予想される機能に基づいて、多くの最適化と特別な命令を作成しました。インテルの当初の計画に従ってレジスターを使用すると、コードはこれらの最適化を最大限に活用できます。残念ながら、これは失われた芸術のようです。インテルの全体的な設計を認識しているコーダーはほとんどなく、ほとんどのコンパイラーは単純すぎたり、実行速度に重点を置いたりして、レジスターを適切に使用できません。ただし、レジスターと命令セットがどのように適合するかを理解することは、簡単なサイズコーディングへの道のりにおける重要なステップです。

この記事を裏付ける他の情報源はありますか? もしそうなら、私は本当にそれをチェックしたいです。

STOS使用のような高速な操作ediが使用eaxされる状況について話しているのではないことに注意してesiくださいecx

4

2 に答える 2

5

命令セットには、特定のレジスタを使用する命令があります。これらの命令は、任意のレジスタを対象とする同等の関数よりも小さく (そして多くの場合高速) です。

于 2009-12-14T20:04:10.307 に答える
4

いいえ、そうではありません。ECX をカウンターとして使用すると、LOOP 命令を使用できます。一時はこれが大きな利点でしたが、最近のほとんどの CPU では、LOOP は DEC ECX/JNZ の組み合わせよりも実行に時間がかかります。考えられる利点は、ますます頻繁にボトルネックとなっているメモリ帯域幅の使用量を削減できることです。また、別の命令でシミュレートするのが比較的複雑になる可能性がある、LOOPNZ などの他の形式を使用できる場合/場合にも利点となります。

于 2009-12-14T19:58:59.073 に答える