前へ | 次へ | 目次 | 索引 |
段階的なシステム移行に際して,トランスレートされたVAX共有可能イメージに代わって用いるネイティブなAXP共有可能イメージを作成するには,共有可能イメージ内のユニバーサル・シンボルが両方のイメージでシンボル・ベクタ内の同じオフセットに設定されるようにしなければなりません。VAX共有可能イメージをトランスレートする場合,VESTは元のVAX共有可能イメージで宣言されたユニバーサル・シンボルを含むシンボル・ベクタをイメージに対して作成します(トランスレートされたイメージは実際には,VESTが作成するAXPイメージであり,他のAXP共有可能イメージと同様にシンボル・ベクタにユニバーサル・シンボルが登録されています)。トランスレートされた共有可能イメージと互換性のあるネイティブな共有可能イメージを作成するには,ネイティブなAXP共有可能イメージと,それに対応するトランスレートされた VAX共有可能イメージの両方で,同じシンボルがシンボル・ベクタ内の同じオフセットに登録されていなければなりません。
VESTがトランスレートされたVAXイメージ内で作成するシンボル・ベクタをレイアウトする方法を制御するには,シンボル・インフォメーション・ファイル(SIF)を作成し,トランスレーション操作をそのファイルを参照しながら行います。SIFファイルはテキスト・ファイルであり,このファイルを使用すれば,トランスレートされたイメージに対してVESTが作成するシンボル・ベクタ内のエントリのレイアウトを指定でき,どのシンボルを,トランスレートされた共有可能イメージのグローバル・シンボル・テーブル(GST)に登録しなければならないかも指定できます。シンボル・ベクタのレイアウトを指定しなかった場合には,VESTは共有可能イメージの再トランスレーションでレイアウトを変更する可能性があります。VESTは独自の目的で使用するために,最初のシンボル・ベクタ・エントリを確保します。シンボル・インフォメーション・ファイル(SIF)についての詳しい説明は,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。
ネイティブな共有可能イメージ内でシンボル・ベクタのレイアウトを制御するには,SYMBOL_VECTORオプションを指定します。リンカはSYMBOL_VECTORオプション文にシンボルが指定されている順序と同じ順序でシンボル・ベクタ内にエントリをレイアウトします。SYMBOL_VECTORオプションにシンボルを指定する場合には,VAX共有可能イメージを作成するために使用した転送ベクタ内でのシンボルの順序と同じ順序になるようにしてください。SYMBOL_VECTORオプションの使い方についての詳しい説明は,『OpenVMS Linker Utility Manual』を参照してください。
トランスレートされた共有可能イメージのシンボル・ベクタがネイティブな共有可能イメージのシンボル・ベクタと一致するかどうかを確認するには,次の操作を実行します。
/SIF修飾子を指定した場合には,VESTはシンボル・ベクタの内容をリストとして登録したSIFファイルを作成します(SIFファイルの作成と解釈方法については,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください)。次の例は,共有可能イメージMYMATH.EXEに対して,VESTが作成したSIFファイルを示しています。エントリがシンボル・ベクタ内の番目の位置から始まっていることに注意してください(オフセットは16進数の10)。
! .SIF Generated by VEST(V1.0)on ! Image "MYMATH", "V1.0" MYDIV 00000018 +S +G 00000030 00 4e MYSUB 0000000c +S +G 00000020 (1) 00 4e MYADD (2) 00000008 +S +G 00000010 00 4e MYMUL 00000010 +S +G 00000040 00 4e |
ネイティブな共有可能イメージでシンボル・ベクタ内のシンボルのオフセットを判断するには,ANALYZE/IMAGEユーティリティを使用します。次の例は共有可能イメージMYMATH.EXEの解析から抜粋したものであり,MYSUBというシンボルのオフセットを示しています。
. . . 4)Universal Symbol Specification(EGSD$C_SYMG) data type: DSC$K_DTYPE_Z(0) symbol flags: (0) EGSY$V_WEAK 0 (1) EGSY$V_DEF 1 (2) EGSY$V_UNI 1 (3) EGSY$V_REL 1 (4) EGSY$V_COMM 0 (5) EGSY$V_VECEP 0 (6) EGSY$V_NORM 1 psect: 0 value: 16(%X'00000020') symbol vector entry(procedure) %X'00000000 00010000' %X'00000000 00000050' symbol: "MYSUB" . . . |
SIFファイルに登録されているオフセットがネイティブな共有可能イメージのオフセットと一致しない場合には,テキスト・エディタを使用して,これらのオフセットを修正しなければなりません。シンボル・ベクタの最初のエントリは VESTユーティリティが使用するために確保されています。
トランスレーション操作では,SIFファイルを参照してください
このトランスレーション操作で,VEST は SIF ファイルに指定されたオフセットを使用して,トランスレートされたイメージにシンボル・ベクタを作成します。VESTはデフォルトのデバイスおよびディレクトリからSIFファイルを検索します(VESTユーティリティの使い方については,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください)。
6.3.2 特殊なトランスレートされたイメージ(ジャケット・イメージ)と代用イメージの作成
場合によっては,VAX共有可能イメージをAXP共有可能イメージに完全に置き換えることができない場合があります。たとえば,VAX共有可能イメージで VAXアーキテクチャ固有の機能を使用している場合などです。このような場合には,元のVAX共有可能イメージの機能を実行できるように,トランスレートされたイメージとネイティブ・イメージの両方を作成しなければなりません。また,場合によっては,トランスレートされたVAX共有可能イメージと新しいAXP共有可能イメージとの間に関係を定義しなければならないことがあります。どちらの場合にも,トランスレートされたVAXイメージはジャケット・イメージとして作成されなければなりません。
ジャケット・イメージを作成するには,VAXシステムで新しい AXPイメージの代用バージョンを作成します。その後,変更された VAX共有可能イメージを作成し,/JACKET=shrimg修飾子を指定して,この共有可能イメージをトランスレートします。ただし,shrimgは新しいAXP共有可能イメージの名前です。代用イメージのトランスレーションは前もって実行しておかなければなりません。これは,代用イメージを記述するIIFファイルが必要だからです。代用イメージの作成についての詳しい説明は,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。
この付録では,ネイティブなOpenVMS AXPコンパイラ固有の機能について説明します。さらに,この付録では,OpenVMS VAXコンパイラの機能のうち,OpenVMS AXPコンパイラではサポートされない機能と,動作が変更された機能についても示します。
以下に 付録 A で説明するコンパイラと,その節番号をアルファベット順に示します。
A.1 DEC Ada の AXPシステムとVAXシステム間の互換性
DEC Ada は,VAX Ada に含まれる標準的および拡張されたAda言語機能を,ほとんどすべて含んでいます。
しかし,プラットフォーム・ハードウェアの違いにより,いくつかの機能はサポートされておらす,VAXシステムとAXPシステムでは異なる機能もあります。あるシステムから別のシステムへのプログラムの移行を助けるため,移行の節ではこれらの違いを説明します。
すべてのシステムの各リリースごとに,これらの機能のすべてがサポートされるわけではありません。詳しくは,DEC Ada のリリース・ノートを参照してください。 |
概して,DEC Ada はすべてのプラットフォームで同じデータ・タイプをサポートします。しかし,以下の違いに注意してください。
VAXシステムではサポートされているが,AXPシステムではサポートされていない
AXPシステムではサポートされているが,VAXシステムではサポートされていない
AXPシステムでは,DEC Ada は省略時設定としてレコードとアレイの構成要素を自然な境界にアラインします。VAXシステムでは,DEC Adaはレコードとアレイの構成要素をバイト境界にアラインします。アラインメントはCOMPONENT_ALIGNMENT プラグマで指定できます。レコード表現節の最大アラインメントは,VAXシステムでもAXPシステムでも 29 です。
A.1.2 タスクに関する相違点
タスクの優先順位とスケジューリング,およびタスク制御ブロック・サイズはアーキテクチャ固有です。詳しくは,リリース・ノートを参照してください。
A.1.3 プラグマに関する相違点
プラグマには以下のような違いがあります。
AXPシステムでは,COMPONENT_SIZE が省略時の選択肢です。VAXシステムでは,STORAGE_UNIT が省略時の選択肢です。
AXPシステムでは,このプラグマは IEEE_FLOAT と VAX_FLOAT という2つの選択肢をサポートします。VAXシステムでは,VAX_FLOAT をサポートします。
AXPシステムではLONG_FLOATプラグマは,FLOAT_REPRESENTATIONプラグマの値が VAX_FLOATであるときのみサポートされます。
システム間で異なるデータ型の制限があります。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
AXPシステムではサポートされません。
AXPシステムではサポートされません。
VAXシステムとAXPシステムでのこのプラグマのサポートには,実行に関するいくつかの違いがあります。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
SYSTEMパッケージに関しては,以下の変更があります。
AXPシステムではサポートしていますが,VAXシステムではサポートしていません。
VAXシステムではサポートしていますが,AXPシステムではサポートしていません。
VAXシステムでの値は 33,AXPシステムでの値は 15 です。
DEC Ada を使用できる各システムで特定の列挙型がサポートされます。
AXPシステムでは,OpenVMS_AXP という名前がサポートされます。
AXPシステムでの値は 10.0-3(1 ms)です。VAXシステムでの値は 10.0-2(10 ms)です。
さらに,VAXシステムでサポートされる以下のタイプとサブプログラムは,AXPシステムではサポートされません。
以下に他のパッケージでの違いを示します。
システム間で実行方法に違いがあります。詳しくは,『DEC Ada Language Reference Manual』を参照してください。
システム間で実行方法に違いがあります。各パッケージの解説を参照してください。
このパッケージは VAX システムと,いくつかの制限事項はありますが AXP システムでサポートされます。詳しくは,『DEC Ada Run-Time Reference Manual for OpenVMS Systems』を参照してください。
VAXシステムでサポートされる以下の2つのあらかじめ定義されている具現は AXPシステムではサポートされません。
A.2 DEC C for OpenVMS AXPシステムとVAX Cとの互換性
Alpha AXPアーキテクチャをサポートするために,DEC Cと総称するCコンパイラ群に1つのコンパイラが追加されました。DEC Cを構成するコンパイラ群は,ANSIに準拠する基本的なC言語を定義し,これらの言語はAlpha AXPアーキテクチャも含めて,すべての DECプラットフォームで使用できます。
A.2.1 言語モード
DEC C for OpenVMS AXPシステムはANSI C標準規格に準拠し,オプションとして VAX CおよびCommon C(pcc)の拡張機能をサポートします。オプションとして提供されるこれらの拡張機能はモードと呼び,これらの拡張機能を起動するには,/STANDARD修飾子を使用します。表 A-1 はこれらのモードと,各モードを起動するのに必要なコマンドと修飾子の構文を示しています。
モード | コマンド修飾子 | 説明 |
---|---|---|
省略時の設定 | /STANDARD=RELAXED_ANSI89 | ANSI C標準規格に準拠するが,DECの追加キーワードや,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標準規格と互換性がない場合も使用可能である。 |
VAX CとCommon Cの組み合わせ | /STANDARD=(VAXC,COMMON) | ANSI C標準規格の他に,VAX CとCommon Cの両方の拡張機能を使用できる。これらの拡張機能がANSI標準規格と互換性がない場合でも使用できる。 |
A.2.2 DEC C for OpenVMS AXPシステムのデータ型のマッピング
DEC C for OpenVMS AXPシステムのコンパイラは,対応するVAXコンパイラとほとんど同じデータ型マッピングをサポートします。表 A-2 は,Alpha AXPアーキテクチャでのC言語の算術演算データ型のサイズを示しています。
Cデータ型 | VAX Cのマッピング | DEC C のマッピング |
---|---|---|
pointer | 32 | 32または641 |
long | 32 | 32 |
int | 32 | 32 |
short | 16 | 16 |
char | 8 | 8 |
float | 32 | 322 |
double | 642 | 642 |
long double | 642 | 642 |
__int16 | NA | 16 |
__int32 | NA | 32 |
__int64 | NA | 64 |
移植性を向上するために,DEC C for OpenVMS AXPシステムのコンパイラでは,各データ型に対してマクロを定義するヘッダ・ファイルが準備されています。これらのマクロは,int64などの汎用データ型名を,--64などのマシン固有のデータ型にマッピングします。たとえば,64ビットの長さのデータ型が必要な場合には,int64マクロを使用します。
前へ | 次へ | 目次 | 索引 |