前へ | 次へ | 目次 | 索引 |
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』を参照してください。
この章では,ネイティブな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 のリリース・ノートを参照してください。 |
概して,DEC Ada はすべてのプラットフォームで同じデータ・タイプをサポートします。しかし,以下の違いに注意してください。
VAXシステムではサポートされているが,Alphaシステムではサポートされていない
Alphaシステムでは,DEC Ada は省略時設定としてレコードとアレイの構成要素を自然な境界にアラインします。VAXシステムでは,DEC Adaはレコードとアレイの構成要素をバイト境界にアラインします。アラインメントはCOMPONENT_ALIGNMENT プラグマで指定できます。レコード表現節の最大アラインメントは,VAXシステムでもAlphaシステムでも 29 です。
タスクの優先順位とスケジューリング,およびタスク制御ブロック・サイズはアーキテクチャ固有です。詳しくは,リリース・ノートを参照してください。
11.1.3 プラグマに関する相違点
Alphaシステムでは,COMPONENT_SIZE が省略時の選択肢です。VAXシステムでは,STORAGE_UNIT が省略時の選択肢です。
Alphaシステムでは,このプラグマは IEEE_FLOAT と VAX_FLOAT という2つの選択肢をサポートします。VAXシステムでは,VAX_FLOAT をサポートします。
システム間で異なるデータ型の制限があります。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
Alphaシステムではサポートされません。
Alphaシステムではサポートされません。
VAXシステムとAlphaシステムでのこのプラグマのサポートには,実行に関するいくつかの違いがあります。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
Alphaシステムではサポートしていますが,VAXシステムではサポートしていません。
VAXシステムではサポートしていますが,Alphaシステムではサポートしていません。
VAXシステムでの値は 33,Alphaシステムでの値は 15 です。
DEC Ada を使用できる各システムで特定の列挙型がサポートされます。
Alphaシステムでは,OpenVMS_Alpha という名前がサポートされます。
Alphaシステムでの値は 10.0-3 (1 ms)です。VAXシステムでの値は 10.0-2 (10 ms) です。
さらに,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
以下に他のパッケージでの違いを示します。
システム間で実行方法に違いがあります。詳しくは,『DEC Ada Language Reference Manual』を参照してください。
システム間で実行方法に違いがあります。各パッケージの解説を参照してください。
このパッケージは VAX システムと,いくつかの制限事項はありますが Alpha システムでサポートされます。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
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 はこれらのモードと,各モードを起動するのに必要なコマンドと修飾子の構文を示しています。
モード | コマンド修飾子 | 説明 |
---|---|---|
省略時の設定 | /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言語の算術演算データ型のサイズを示しています。
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 |
移植性を向上するために,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つだけ指定できます。
コンパイラ・オプション | 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浮動形式 |
DEC C には,表 11-4 に示す機能があり,これらの機能は Alphaシステム固有の機能です。この後の節では,これらの機能について説明します。
機能 | 説明 |
---|---|
一部のAlpha命令へのアクセス | 組み込み機能として使用できる |
一部のVAX命令へのアクセス | Alpha PALcodeを通じて使用できる |
不可分な組み込み機能 | AND,OR,およびADD演算の不可分性を保証する |
前へ | 次へ | 目次 | 索引 |