ビット浮動小数点レジスタがあります。カードに用意されているレジスタもこの一覧に加えることができます)。使用可能なレジスタのどれにもローカル変数を割り当てられない場合、その変数はスタック上に割り当てられます。後ほど説明しますが、これは、ほとんどすべての関数において、さまざまな原因で発生します。プログラムについて考えてみましょう。このプログラムの動作には意味がありませんが、レジスタ割り当ての説明には優れた例といえるでしょう。内で宣言される変数すべての用途を分析し、同じタイミングで有効になっていなければならない変数のセットを判断します。その後、各変数へのアクセス回数を見積もります。つの変数が含まれるセットが異なれば、それらを同じレジスタに割り当てることができます。同じセットの変数の一部に適切なレジスタを割り当てられない場合、その変数をメモリに吐き出す必要があります。コンパイラは、メモリの総アクセス回数を最小限に抑えるために、アクセス回数が最も少ない変数を選んでメモリへの吐き出しを試みます。これが基本的な考え方です。これよりも適切な割り当てが可能になる特殊なケースが多数あります。最新のコンパイラは、優れた割り当てを考案することができますが、最適な割り当てではありません。言え、人間がコンパイラよりも優れた割り当てを考え出すことは至難の技です。プログラムをコンパイルし、コンパイラがどのようにローカル変数をレジスタに割り当てるかを確認します。プラットフォームを想定します。割り当てられているのがわかります。うまく再利用しています。