本節で説明されているコンパイラー・オプションを使用して、以下を行うことができます。
- 64 ビット環境のアプリケーションの開発
- 32 ビット環境から 64 ビット環境へのソース・コードのマイグレーション
前述のオプションはすでに 32 ビット環境で一部提供されていますが、そのオプションでは
64 ビット・アーキテクチャーに特有の新しい設定値が指定されています。
本節では、こうした場合の新しい設定のみについて説明しています。
ここにまとめたオプションは主に、64 ビット・プラットフォームの開発者を対象とします。
構文
-q32
64 ビット環境で 32 ビットのコンパイル・ビット・モード (簡単に言えば、32 ビット・モード) を使用できるように
します。
-q32 オプションではコンパイル・ビット・モードが指定され、-qarch オプションとの組み合わせ
で、32 ビット実行モジュールが実行されるターゲット・マシンが決まります。
規則
- 32 ビット・モードでは、デフォルト整数およびデフォルト実サイズは 4 バイトです。
- 32 ビット・モードでは、デフォルト整数のポインター・サイズは 4 バイトです。
- 32 ビット・モードをターゲットとしたときは、32 ビットのオブジェクト・モジュールが作成されます。
- -q32 がデフォルトです 。
- -q64 は、-q32 をオーバーライドすることがあります。
- -qarch の設定値はすべて、-q32 と互換性があります。
-q32 を指定すると、デフォルトのサブオプションは ppc64grsq になり、
-q32 のデフォルトの -qtune サブオプションは pwr4 になります。
- LOC 組み込み関数は INTEGER(4) 値を戻します。
例
- 32 ビット・コンパイル・モードを使用し、汎用 PowerPC アーキテクチャーをターゲットにする場合。
-qarch=ppc -q32
- 現在は同じコンパイル・モードを保持しているが、
ターゲットを RS64II に変更する場合。
-qarch=ppc -q32 -qarch=rs64b
-qarch の最後の設定値が優先される点に注意してください。
- 現在は同じターゲットを保持しているが、コンパイル・モードを 64 ビットに変更する場合。
-qarch=ppc -q32 -qarch=rs64b -q64
-q64 を指定すると、以前のインスタンスである -q32 がオーバーライドされる点に注意してください。
構文
-q64
64 ビットのコンパイル・ビット・モードが指定され、-qarch オプションとの組み合わせで、64 ビット
実行モジュールが実行されるターゲット・マシンが決まります。
-q64 オプションを指定すると、オブジェクト・モジュールが 64 ビットのオブジェクト形式で作成され、
64 ビットの命令セットが生成されます。
注意点として、32 ビット環境でコンパイルを行って 64 ビット・オブジェクトを作成することもできますが、
そのオブジェクトは、-q64 オプションを使って 64 ビット環境にリンクする必要があります。
規則
- -q64 と互換性のある -qarch の設定値は、以下のとおりです。
- -qarch=auto (64 ビット・システムでコンパイルする場合)
- -qarch=com (-q64 および -qarch=com を使用すると、コンパイラーは
サイレントに arch 設定を ppc64 にアップグレードします。)
- -qarch=ppc (-q64 および -qarch=ppc を使用すると、コンパイラーは
サイレントに arch を ppc64 にアップグレードします。)
- -qarch=ppcgr (-q64 および -qarch=ppcgr を使用すると、コンパイラーは
サイレントに arch を ppc64gr にアップグレードします。)
- -qarch=ppc64
- -qarch=ppc64gr
- -qarch=ppc64grsq
- -qarch=rs64b
- -qarch=rs64c
- -qarch=pwr3
- -qarch=pwr4
- -qarch=pwr5
- -qarch=ppc970
- -q64 のデフォルトの -qarch 設定値は ppc64 です。
- 64 ビット・モードをターゲットとしたときは、64 ビットのオブジェクト・モジュールが作成されます。
- -q32 が -q64 をオーバーライドすることがあります。
- -q64 は、-qarch の競合設定値をオーバーライドし、
その結果、設定値が -q64 -qarch=ppc64 になり、警告メッセージが表示されます。
- -q64 のデフォルトとなるチューニング設定値は
-qtune=pwr4
です。
- 64 ビット・モードでは、デフォルト整数およびデフォルト実サイズは 4 バイトです。
- 64 ビット・モードでは、デフォルト整数のポインター・サイズは 8 バイトです。
- 最大配列サイズは、約 2**40 バイト (静的ストレージの場合) または 2**60 バイト (ヒープでの動的割り振りの
場合) まで増大します。
バインドされる最大次元範囲は、-2**63, 2**63-1 バイトまで拡張されます。
配列定数の最大配列サイズは拡張されておらず、32 ビット・モードでの最大サイズと同じままです。
初期化できる最大配列サイズは 2**28 バイトです。
- 配列コンストラクター暗黙 DO ループの最大反復カウントは 2**63-1 バイトまで拡大されます。
- 最大文字変数の長さは約 2**40 バイトまで拡張されます。
文字定数および定数のサブオブジェクトの最大長は、32 767 バイト (32 KB) の 32 ビット・モードの
場合と同じままです。
- LOC 組み込み関数は INTEGER(8) 値を戻します。
- -qautodbl=dblpad を 64 ビット・モードで使用するときには、8 バイトの整数演算用と
して、INTEGER(4) を INTEGER(8) にプロモートするため -qintsize=8 を使用して
ください。
例
下の例は 64 ビット・モードで RS64II (RS64b とも呼ばれます) をターゲットとしています。
-q32 -qarch=rs64b -q64
次の例では、64 ビット・アーキテクチャーの共通グループ (現在は
RS64II、RS64III、POWER3、POWER4、POWER5、および
PowerPC 970 のみからなる) をターゲットとする 64 ビット・コンパイルを行います。
-q64 -qarch=com
arch 設定はサイレントに、もっとも一般的な 64 ビット・モード・コンパイル・ターゲットである
ppc64 にアップグレードされます。
構文
-qwarn64 | -qnowarn64
32 ビット環境から 64 ビット環境へのコードの移植の際に役立ちます。
つまり、8 バイト整数ポインターの 4 バイトへの切り捨てが検出されます。
-qwarn64 オプションでは、通知メッセージを
使用して、32 ビットから 64 ビットへのマイグレーションで
問題の原因となり得るステートメントが識別されます。
規則
- デフォルト設定値は -qnowarn64 です。
- -qwarn64 オプションは、
32 ビットおよび 64 ビット・モードのどちらでも使用できます。
- コンパイラーは、
次のような状態には通知メッセージのフラグを付けます。
- INTEGER(4) 変数に対する LOC 組み込みの参照割り当て。
- INTEGER(4) 変数または INTEGER(4) 定数と、
整数ポインターとの間の割り当て。
- 共通ブロック内の整数ポインターの指定。
- 等価ステートメント内の整数ポインターの指定。
