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

A.2.151.1 値

次に、-memalign の境界整列と動作の値を示します。

表 A–38 -xmemalign の境界整列と動作の値

a

 

b

 

最大 1 バイトの境界整列 

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

最大 2 バイトの境界整列 

-s 

シグナル SIGBUS を発生させる 

最大 4 バイトの境界整列 

-xarch=v9 の不変式の場合にのみ、

4 バイト以下の境界整列に対してシグナル SIGBUS を発生させ、それ以外ではアクセスを解釈して実行を継続する。そのほかすべての -xarch 値では、f フラグは i と同じです。

最大 8 バイトの境界整列 

   

16 

最大 16 バイトの境界整列 

   

bif のいずれかに設定してコンパイルしたオブジェクトファイルにリンクする 場合は、必ず、-xmemalign を指定する必要があります。「3.3.3 コンパイル時とリンク時のオプション」に、コンパイル時とリンク時の両方に指定する必要があるコンパイラオプションの全一覧をまとめています。

デフォルト

次のデフォルトの値は、-xmemalign オプションがまったく指定されていない場合にのみ適用されます。

次に、-xmemalign オプションが指定されているが値を持たない場合のデフォルト値を示します。

次の表は、-xmemalign で処理できるさまざまな境界整列の状況とそれに適した -xmemalign 指定を示しています。

表 A–39 -xmemalign の例

コマンド 

状況  

-xmemalign=1s

すべてのメモリーアクセスの整列が正しくないため、トラップ処理が遅すぎる。 

-xmemalign=8i

コード内に境界整列されていないデータへのアクセスが意図的にいくつか含まれているが、それ以外は正しい 

-xmemalign=8s

プログラム内に境界整列されていないデータへのアクセスは存在しないと思われる 

-xmemalign=2s

奇数バイトへのアクセスが存在しないか検査したい 

-xmemalign=2i

奇数バイトへのアクセスが存在しないか検査し、プログラムを実行したい