Sun Studio 12: Fortran プログラミングガイド

4.5.2 位置独立コードと –xcode

位置独立コード (PIC) は、リンクエディタによる再配置を必要とせず、プログラムの 任意のアドレスにリンクできます。このようなコードは、本質的に同時プロセス間で共有できます。したがって、動的共有ライブラリを構築する場合、-xcode コンパイラオプションを使用して、位置に依存しないように構成要素ルーチンをコンパイルしなければいけません。

位置独立コードの中では、大域的なデータへの個々の参照は、大域的なオフセットテーブルへのポインタを通じての参照としてコンパイルされます。関数呼び出しはそれぞれ、手続きリンケージテーブルを通して、相対アドレッシングモードでコンパイルされます。この大域的なオフセットテーブルのサイズは、SPARC プロセッサでは 8K バイトに制限されています。

コンパイラフラグ -xcode=v を使用すると、バイナリオブジェクトのコードアドレス空間を指定できます。このコンパイラフラグを使用して、32 ビット、44 ビット、または 64 ビットの絶対アドレス、さらに小型モデルと大型モデルの位置に依存しないコードを生成できます。-xcode=pic13 は古い -pic と等価で、-xcode=pic32-PIC と等価です。

-xcode=pic32 コンパイラオプションは -xcode=pic13 と似ていますが、さらに、大域的なオフセットテーブルが 32 ビットのアドレス空間に渡ることを許可します。詳細は、f95(1) のマニュアルページか『Fortran ユーザーズガイド』を参照してください。