/homeparams (レジスタ パラメーターのスタックへのコピー)
関数に入るときに、レジスタで渡されたパラメーターも、スタックの場所に強制的に書き込みます。
構文
/homeparams
解説
このコンパイラ オプションは、x64 を対象とするネイティブ コンパイラとクロス コンパイラでのみ使用できます。
x64 の呼び出し規則では、レジスタで渡されるパラメーターについても、すべてのパラメーター用のスタック領域を割り当てる必要があります。 詳しくは、「パラメーターの引き渡し」をご覧ください。 既定では、レジスタ パラメーターは、リリース ビルドでそれらに割り当てられたスタック領域にコピーされません。 これにより、プログラムの最適化されたリリース ビルドのデバッグが難しくなります。
リリース ビルドでは、/homeparams オプションを使って、コンパイラにレジスタ パラメーターをスタックに強制的にコピーさせて、アプリケーションをデバッグできるようにすることができます。 /homeparams は、レジスタ パラメーターをスタックに読み込むために余分なサイクルが必要になるため、パフォーマンスが低下することを意味します。
デバッグ ビルドでは、レジスタで渡されたパラメーターが常にスタックに設定されます。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[追加のオプション] ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。AdditionalOptions