特定のメモリーモデルでコード生成とデータ格納を行うようコンパイラーに指示します。
なし
インテル(R) 64 アーキテクチャー
Linux*: | -mcmodel=mem_model |
Mac OS* X: | なし |
Windows*: | なし |
mem_model | 使用するメモリーモデルです。設定可能な値は以下のとおりです。 | |
small | コードとデータをアドレス空間の最初の 2GB までに制限するようコンパイラーに指示します。コードとデータのすべてのアクセスは、命令ポインター
(IP) 相対アドレス指定で行われます。 | |
medium | コードを最初の 2GB までに制限するようコンパイラーに指示します。データは制限されません。コードは IP 相対アドレス指定でアクセスできますが、データのアクセスは絶対アドレス指定を使用する必要があります。 | |
large | コードもデータも制限されません。コードもデータもアクセスは絶対アドレス指定を使用しなければなりません。 |
インテル 64 アーキテクチャー・ベースのシステムでは、コンパイラーは、コードとデータをアドレス空間の最初の
2GB までに制限します。命令ポインター (IP) 相対アドレス指定がコードとデータのアクセスに使用されます。 |
このオプションは、特定のメモリーモデルでコード生成とデータ格納を行うようコンパイラーに指示します。コードサイズとパフォーマンスに影響します。プログラムにあるグローバルとスタティック・データが合計で 2GB よりも少ない場合、-mcmodel=small で十分です。2GB を超えるグローバルとスタティック・データには、-mcmodel=medium または -mcmodel=large が必要です。2GB を超えるメモリー割り当ては、-mcmodel のどの設定でも行うことができます。
IP 相対アドレス指定は 32 ビットのみ必要ですが、絶対アドレス指定は 64 ビット必要です。IP 相対アドレス指定の方が多少速くアクセスできます。そのため、small メモリーモデルは、パフォーマンスへの影響が最も少ないモデルです。
-mcmodel=medium または -mcmodel=large を指定した場合、インテル(R) ランタイム・ライブラリーの正しいダイナミック・バージョンが使用されるように、-shared-intel コンパイラー・オプションも指定する必要があります。
共有オブジェクト (.so ファイル) が構築された場合、位置独立コード (PIC) が指定されるため、単一の .so で 3 つのメモリーモデルすべてをサポートすることができます。コンパイラー・ドライバーは -fpic コンパイラー・オプションを追加して、PIC を実装します。
ただし、スタティック・ライブラリーに配置されるコード、または静的にリンクされるコードにはメモリーモデルを指定する必要があります。
なし
shared-intel コンパイラー・オプション
fpic コンパイラー・オプション