Sun Studio 12 Update 1: Fortran ユーザーズガイド

3.4.143 –xmemalign[= <a><b>]

(SPARC) メモリー境界整列の最大値の想定と、境界整列不正データへアクセスした時の動作を指定します。

コンパイル時に境界整列を決定できるメモリーアクセスの場合、コンパイラは、そのデータ境界整列に適したロード/ストア命令のシーケンスを生成します。

境界整列がコンパイル時に決定できないメモリーアクセスの場合、コンパイラは、境界整列を想定して、必要なロード/ストア命令のシーケンスを生成します。

-xmemalign フラグを使用すると、このようなあいまいな状況の場合にコンパイラが想定するデータの最大メモリー境界整列を指定することができます。整列不正データへのメモリーアクセスが行われた場合の実行時エラーの動作も指定します。

指定する値は、2 種類です。すなわち、数値の境界整列値 <a> と、英数字の動作フラグ <b> です。

境界整列値 <a> に指定できる値は、次のとおりです。

1

最大で 1 バイトの境界整列を想定します。

2

最大で 2 バイトの境界整列を想定します。

4

最大で 4 バイトの境界整列を想定します。

8

最大で 8 バイトの境界整列を想定します。

16

最大で 16 バイトの境界整列を想定します。

不正境界整列データにアクセスした場合のエラーの動作を表す <b> に指定できる値は、次のとおりです。

i

アクセスを解釈し、実行を継続します。

s

SIGBUS という信号を発生させます。

f

64 ビットのプラットフォームでは、4 バイト以下の境界整列にだけ SIGBUS 信号を発生させます。それ以外ではアクセスを解釈して実行を継続します。その他のプラットフォームでは、fi と等価です。

-xmemalign を指定しない場合のコンパイル時のデフォルト値は、次のようになります。

値をまったく指定しない場合の -xmemalign のデフォルト値は、すべてのプラットフォームで 1i です。

-xmemalign そのものは、特定のデータ整列を強制的に行わせることはありません。強制的にデータ境界整列を行わせるには、-dalign または -aligncommon を使用してください。

また、b の値に i または f を指定してコンパイルしたオブジェクトファイルにリンクする場合は、必ず、-xmemalign を指定してください。

-dalign オプションはマクロです。

-dalign は、-xmemalign=8s -aligncommon=16 のマクロです。

-aligncommon=1-xmemalign とともに使用しないでください。これらの指令は衝突するため、同じプラットフォームや構成でセグメント例外が発生する場合があります。

詳細は、「3.4.2 –aligncommon[={ 1|2|4|8| 16}]」を参照してください。