OpenVMS Alpha
オペレーティング・システム
OpenVMS VAX から OpenVMS Alpha へのアプリケーションの移行


前へ 次へ 目次 索引


10.3.2 特殊なトランスレートされたイメージ(ジャケット・イメージ)と代用イメージの作成

場合によっては,VAX共有可能イメージをAlpha共有可能イメージに完全に置き換えることができない場合があります。たとえば,VAX共有可能イメージで VAXアーキテクチャ固有の機能を使用している場合などです。このような場合には,元のVAX共有可能イメージの機能を実行できるように,トランスレートされたイメージとネイティブ・イメージの両方を作成しなければなりません。また,場合によっては,トランスレートされたVAX共有可能イメージと新しいAlpha共有可能イメージとの間に関係を定義しなければならないことがあります。どちらの場合にも,トランスレートされたVAXイメージはジャケット・イメージとして作成されなければなりません。

ジャケット・イメージを作成するには,VAXシステムで新しい Alphaイメージの代用バージョンを作成します。その後,変更された VAX共有可能イメージを作成し,/JACKET=shrimg修飾子を指定して,この共有可能イメージをトランスレートします。ただし, shrimgは新しいAlpha共有可能イメージの名前です。代用イメージのトランスレーションは前もって実行しておかなければなりません。これは,代用イメージを記述するIIFファイルが必要だからです。代用イメージの作成についての詳しい説明は,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。


第 11 章
OpenVMS Alpha コンパイラ

この章では,ネイティブなOpenVMS Alphaコンパイラ固有の機能について説明します。さらに,OpenVMS VAXコンパイラの機能のうち,OpenVMS Alphaコンパイラではサポートされない機能と,動作が変更された機能についても示します。

以下にこの章で説明するコンパイラを示します。

コンパイラの相違点が発生するのは,次の 2 つの理由によります。それは,OpenVMS VAX で動作するコンパイラの以前のバージョンと現在のバージョンとの間に違いがあるためと,VAX コンピュータと Alpha コンピュータで動作するバージョンに違いがあるためです。OpenVMS Alpha コンパイラは,OpenVMS VAX の対応するコンパイラと互換性を維持するように設計されています。この後の節に示すように,互換性を維持するためにいくつかの修飾子が提供されます。

言語は言語標準規格に準拠し,OpenVMS VAX の大部分の言語拡張機能をサポートします。コンパイラは OpenVMS VAX システムの場合と同じ省略時のファイル・タイプを使用して出力ファイルを作成します。たとえば,オブジェクト・モジュールのファイル・タイプは .OBJ です。

しかし,OpenVMS VAX システムのコンパイラでサポートされていた機能のうち,一部の機能は OpenVMS Alpha システムで提供されません。

各言語のコンパイラの相違点の詳細については,その言語のマニュアル,とくにユーザーズ・ガイドとリリース・ノートを参照してください。

11.1 DEC Ada の AlphaシステムとVAXシステム間の互換性

DEC Ada は,VAX Ada に含まれる標準的および拡張されたAda言語機能を,ほとんどすべて含んでいます。これらの機能は次の解説書で説明されています。

しかし,プラットフォーム・ハードウェアの違いにより,いくつかの機能はサポートされておらす,VAXシステムとAlphaシステムでは異なる機能もあります。あるシステムから別のシステムへのプログラムの移行を助けるため,移行の節ではこれらの違いを説明します。

注意

すべてのシステムの各リリースごとに,これらの機能のすべてがサポートされるわけではありません。詳しくは,DEC Ada のリリース・ノートを参照してください。

11.1.1 データ表現とアラインメントにおける相違点

概して,DEC Ada はすべてのプラットフォームで同じデータ・タイプをサポートします。しかし,以下の違いに注意してください。

11.1.2 タスクに関する相違点

タスクの優先順位とスケジューリング,およびタスク制御ブロック・サイズはアーキテクチャ固有です。詳しくは,リリース・ノートを参照してください。

11.1.3 プラグマに関する相違点

プラグマには以下のような違いがあります。

11.1.4 SYSTEMパッケージの相違点

SYSTEMパッケージに関しては,以下の変更があります。

さらに,VAXシステムでサポートされる以下のタイプとサブプログラムは,Alphaシステムではサポートされません。

SYSTEM.READ_REGISTER
SYSTEM.WRITE_REGISTER
SYSTEM.MFPR
SYSTEM.MTPR
SYSTEM.CLEAR_INTERLOCKED
SYSTEM.SET_INTERLOCKED
SYSTEM.ALIGNED_WORD
SYSTEM.ADD_INTERLOCKED
SYSTEM.INSQ_STATUS
SYSTEM.REMQ_STATUS
SYSTEM.INSQHI
SYSTEM.REMQHI
SYSTEM.INSQTI
SYSTEM.REMQTI

11.1.5 他の言語パッケージ間での相違点

以下に他のパッケージでの違いを示します。

11.1.6 あらかじめ定義されている命令に対する変更

VAXシステムでサポートされる以下の2つのあらかじめ定義されている命令は Alphaシステムではサポートされません。

11.2 DEC C for OpenVMS AlphaシステムとVAX Cとの互換性

DEC Cを構成するコンパイラ群は,ANSIに準拠する基本的なC言語を定義し,これらの言語はAlphaアーキテクチャも含めて,すべてのDECプラットフォームで使用できます。詳しくは,DEC C の解説書を参照してください。

11.2.1 言語モード

DEC C for OpenVMS AlphaシステムはANSI C標準規格に準拠し,オプションとして VAX CおよびCommon C (pcc)の拡張機能をサポートします。オプションとして提供されるこれらの拡張機能はモードと呼び,これらの拡張機能を起動するには,/STANDARD修飾子を使用します。表 11-1 はこれらのモードと,各モードを起動するのに必要なコマンドと修飾子の構文を示しています。

表 11-1 DEC C for OpenVMS Alphaコンパイラの操作モード
モード コマンド修飾子 説明
省略時の設定 /STANDARD=RELAXED_ANSI89 ANSI C標準規格に準拠するが,弊社の追加キーワードや,1文字目がアンダースコアでない事前定義マクロも使用できる。
ANSI C /STANDARD=ANSI89 厳密にANSI Cに準拠した言語のみを受け付ける。
VAX C /STANDARD=VAXC ANSI C標準規格の他にVAX Cの拡張機能も使用できる。これらの拡張機能が ANSI C標準規格と互換性がない場合でも使用可能である。
Common C (pcc) /STANDARD=COMMON ANSI C標準規格の他に,Common Cの拡張機能も使用できる。これらの拡張機能がANSI C標準規格と互換性がない場合も使用可能である。
Microsoftとの互換性 /STANDARD=MS Microsoft Visual C++コンパイラ製品に付属するCコンパイラの言語規則に従ってソース・プログラムを解釈する。

11.2.2 DEC C for OpenVMS Alphaシステムのデータ型のマッピング

DEC C for OpenVMS Alphaシステムのコンパイラは,対応するVAXコンパイラとほとんど同じデータ型マッピングをサポートします。表 11-2 は,AlphaアーキテクチャでのC言語の算術演算データ型のサイズを示しています。

表 11-2 DEC C for OpenVMS Alphaコンパイラでの算術演算データ型のサイズ
Cデータ型 VAX Cのマッピング DEC C のマッピング
pointer 32 32または64 1
long 32 32
int 32 32
short 16 16
char 8 8
float 32 32 2
double 64 2 64 2
long double 64 2 64 2
__int16 NA 16
__int32 NA 32
__int64 NA 64


1実現されている場合には,ソース・ファイルでプラグマを使用するか,またはコマンド行修飾子を使用することにより,サイズを選択できる。
2コマンド行修飾子を使用することにより,Alphaで D,F,G,S,またはT浮動小数点データ型にマッピングする方法を選択できる。 第 11.2.2.1 項 を参照。

移植性を向上するために,DEC C for OpenVMS Alphaシステムのコンパイラでは,各データ型に対してマクロを定義するヘッダ・ファイルが準備されています。たとえば,64ビットの長さのデータ型が必要な場合には,int64マクロを使用します。

11.2.2.1 浮動小数点マッピングの指定

Cの浮動小数点データ型とAlphaの浮動小数点データ型の間のマッピングは,コマンド行修飾子によって制御されます。Alphaアーキテクチャでは,次の浮動小数点データ型をサポートします。

コマンド行修飾子を使用すれば,標準的なCデータ型のfloatとdoubleが Alphaのどの浮動小数点データ型にマッピングされるかを制御できます。たとえば,/FLOAT=G_FLOAT修飾子を指定した場合には,DEC Cはfloatデータ型をAlphaの F浮動小数点データ型にマッピングし,doubleデータ型をAlphaのG浮動小数点データ型にマッピングします。表 11-3 は浮動小数点オプションを示しています。各コマンド行に浮動小数点修飾子は1つだけ指定できます。

表 11-3 DEC C の浮動小数点マッピング
コンパイラ・オプション Float Double Long Double
/FLOAT=F_GLOAT F浮動形式 G浮動形式  
/FLOAT=D_FLOAT F浮動形式 D-53浮動小数点  
/FLOAT=IEEE_FLOAT S浮動形式 T浮動形式  
/L_DOUBLE_SIZE=128 (省略時の値) --- --- X浮動形式

11.2.3 Alpha 命令にアクセスする組み込み機能

DEC C には,表 11-4 に示す機能があり,これらの機能は Alphaシステム固有の機能です。この後の節では,これらの機能について説明します。

表 11-4 OpenVMS Alphaシステム固有の DEC Cコンパイラ機能
機能 説明
一部のAlpha命令へのアクセス 組み込み機能として使用できる
一部のVAX命令へのアクセス Alpha PALcodeを通じて使用できる
不可分な組み込み機能 AND,OR,およびADD演算の不可分性を保証する


前へ 次へ 目次 索引