[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]
DEC CおよびDEC Cランタイム・ライブラリ(RTL)は
64ビット・アドレッシングを完全にサポートしているため,OpenVMS Alphaの
64ビット・アプリケーション,ライブラリ,
およびシステム・コードをプログラミングするには,C言語が適しています。
64ビット・ポインタは既存のCコードにシームレスに組み込むことができます。また,
自然なCコーディング・スタイルで,OpenVMS Alphaが提供する
64ビット・アドレス空間を利用して,新規の
64ビット・アプリケーションを開発することができます。
すべてが32ビット・ポインタ・サイズ(省略時の設定),すべてが
64ビット・ポインタ・サイズ,および32ビットと
64ビットのポインタ・サイズが混在する環境をそれぞれサポートすることによって,
DEC Cで64ビットのOpenVMSアプリケーションをプログラミングする上で,
柔軟性に加えて互換性が提供されます。
32ビットと64ビットのポインタが混在する環境をサポートするANSI準拠の
#pragma
手法は,Digital UNIXにも共通しています。64ビットのCサポート機能には,
メモリ割り当てルーチン名のマッピング(_malloc64および_malloc32
の透過的サポート),および32ビットと64ビットのポインタ型についての
Cの型チェックが含まれます。
『OpenVMS Calling Standard』には,
ルーチンの起動およびルーチン間でのデータの引き渡しについて,すべての
OpenVMS言語が使用する手法が説明されています。また,
エラーおよび例外処理ルーチンにおける一貫性を保持するメカニズムも定義しています。
『OpenVMS Calling Standard』は,常に
64ビット単位のパラメータを指定しています。V7.0より前のリリースのOpenVMS
Alphaでは,呼び出されたルーチンは,引数の上位32ビットを常に無視していました。
OpenVMS Alpha V7.0以降,『OpenVMS Calling Standard』は,次の
64ビット・アドレス・サポートを提供します。
- 呼び出されたルーチンは,完全な64ビット・アドレスを使用できる。
- 呼び出し者は,32ビット・ポインタと
64ビット・ポインタのどちらも渡すことができる。
- 参照渡しで渡されるポインタは,元のルーチンの
64ビット版を新しく必要とすることがしばしばある。
- ディスクリプタや項目リストなどを例として定義する自己識別型構造体によって,
既存のAPIが互換性を伴って強化される。
混在するポインタのためのOpenVMS Alphaの64ビット・アドレッシング・サポートには,
次の機能も含まれます。
- OpenVMS Alpha 64ビット仮想アドレス空間レイアウトが,
すべてのプロセスに適用される(64ビット・プロセスや
32ビット・プロセスの区別は特にない)。
- 64ビット・ポインタのアドレッシング・サポートは,64ビットの
OpenVMS Alphaアドレス空間レイアウト全体を対象とし,P0,P1,P2アドレス空間と,
S0/S1,S2,ページ・テーブル・アドレス空間を含む。
- 32ビット・ポインタは,P0,P1,
S0/S1アドレス空間のアドレッシングについて互換性を持つ。
- P0,P1,P2空間アドレスをサポートする新規の
64ビット・システム・サービスが多数追加された。
- 既存の多くのシステム・サービスが,
64ビット・アドレッシングをサポートするように強化された。
- 32ビット・ポインタだけのシステム・サービスに渡されるすべての引数について,
32ビット符号拡張チェックが行われる。
- 64ビット・アドレスを処理するCおよびMACRO-32マクロが用意されている。
[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]