最適化オプション

オプション 既定値 説明
-8086、-186 -8086 ターゲット CPU を指定します。既定は -8086 です。-186 を指定すると、効率がよく、ただし 8086 では実行できないコードが生成されます。[KC160]
-gs 0 実行時のスタック オーバーフロー検査を省略し、より小さく高速なコードを生成します。詳細については、ランタイム エラー「R.1010 stack overflow」の説明を参照してください。
-gf 0 同一の文字列定数 ("...") を同じメモリ域に配置します。このオプションを指定すると、データ サイズが減少しますが、文字列定数を変更するプログラムでは変更が他の文字列に影響するため、このオプションを使用するとプログラムの動作が変わる可能性があります。
-o 0 すべての安全な最適化を行います。-onp 以外のすべての最適化が有効になり、-gs が指定されます。
-oasm 0 一部のアセンブラ命令をより効率のよい命令に置き換えます。たとえば、乗算命令をシフト命令に変更します。
-odn 0 恒等式を消去します。たとえば、定数 0 の加算や 1 の乗算を省略します。
-ogc 0 連続して実行される同一の条件判断を 1 つにまとめます。
-oge 0 同じ式の繰り返しを 1 つにまとめます。
-ogl 0 ループを組み替えて、ジャンプ命令を減らします。
-omisc 1 細かい各種の最適化を行います。次の最適化オプションをすべて指定することと同じです。
  • -opt1   後置 ++/-- 演算の効率化
  • -opt2   レジスタ退避コードの削減
  • -opt3   レジスタ選択の最適化
  • -opt4   レジスタ/メモリ間の代入の削減
  • -opt5   条件の反転によるジャンプの効率化
  • -opt6   参照されないラベルの削減
-onp 0 near ポインタを far ポインタに変換するときに near ポインタが NULL 値かどうかをチェックするコードを省略します。この場合、コードの効率は上がりますが、実行時に NULL 値の near ポインタを far ポインタに変換したとき、far ポインタは NULL になりません。

small/medium モデルを使用し、かつ far ポインタを使用していない場合、このオプションの効果はありません。compact/large モデルでは、局所変数のアドレスなどが暗黙で near になるため、このオプションの影響を受けます。

-or 0 register キーワードが指定されていない変数についても、可能な場合はレジスタ変数を自動的に割り当てます。