こんにちは、私はさまざまなドキュメントでこの種のものを読んでいます
register
宣言されている変数を CPU レジスタに格納するようにコンパイラに指示します。
標準 C 方言では、キーワード register は次の構文を使用します。
register data-definition;
型修飾子は、
register
アクセスを最適化するために、(可能であれば) 宣言されている変数を CPU レジスタに格納するようにコンパイラに指示します。例えば、register int i;
最適化がオンになっている場合、TIGCC は頻繁に使用される変数を CPU レジスタに自動的に保存しますが、キーワード レジスタは、最適化がオフになっていても強制的にレジスタに保存することに注意してください。ただし、レジスターにデータを保管する要求は、この場所で使用できる空きレジスターが十分にないとコンパイラーが判断した場合、拒否されることがあります。
私のポイントは、登録についてだけではありません。私のポイントは、コンパイラが変数をメモリに格納する理由です。コンパイラの仕事は、単にコンパイルしてオブジェクト ファイルを生成することです。実行時に、実際のメモリ割り当てが発生します。なぜコンパイラがこのビジネスを行うのでしょうか。ファイル自体をコンパイルするだけでオブジェクトファイルを実行せずに、Cの場合にメモリ割り当てが発生するということですか?