OpenVMS AXP
オペレーティング・システム
OpenVMS AXP オペレーティング・システムへの移行:
再コンパイルと再リンク


前へ 次へ 目次 索引


6.3.1 シンボル・ベクタ・レイアウトの制御

段階的なシステム移行に際して,トランスレートされた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』を参照してください。

トランスレートされた共有可能イメージのシンボル・ベクタがネイティブな共有可能イメージのシンボル・ベクタと一致するかどうかを確認するには,次の操作を実行します。

  1. /SIF修飾子を指定してVAX共有可能イメージをトランスレートします

    /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 
    

    1. ユニバーサル・シンボルMYSUBに対するエントリ

    2. トランスレートされたイメージのシンボル・ベクタ内でのMYSUBに対するエントリのオフセット

  2. ネイティブな共有可能イメージ内でのシンボル・ベクタのオフセットを調べます

    ネイティブな共有可能イメージでシンボル・ベクタ内のシンボルのオフセットを判断するには,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" 
       .
       .
       .
    

  3. 必要に応じて,SIFファイルに登録されているオフセットを変更します

    SIFファイルに登録されているオフセットがネイティブな共有可能イメージのオフセットと一致しない場合には,テキスト・エディタを使用して,これらのオフセットを修正しなければなりません。シンボル・ベクタの最初のエントリは VESTユーティリティが使用するために確保されています。

  4. VAX共有可能イメージを再トランスレートします

    トランスレーション操作では,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』を参照してください。


付録 A
OpenVMS AXPコンパイラ

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

以下に 付録 A で説明するコンパイラと,その節番号をアルファベット順に示します。

A.1 DEC Ada の AXPシステムとVAXシステム間の互換性

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

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

注意

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

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

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

AXPシステムでは,DEC Ada は省略時設定としてレコードとアレイの構成要素を自然な境界にアラインします。VAXシステムでは,DEC Adaはレコードとアレイの構成要素をバイト境界にアラインします。アラインメントはCOMPONENT_ALIGNMENT プラグマで指定できます。レコード表現節の最大アラインメントは,VAXシステムでもAXPシステムでも 29 です。

A.1.2 タスクに関する相違点

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

A.1.3 プラグマに関する相違点

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

A.1.4 SYSTEMパッケージの相違点

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

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

A.1.5 他の言語パッケージでの相違点

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

A.1.6 あらかじめ定義されている具現に対する変更

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 はこれらのモードと,各モードを起動するのに必要なコマンドと修飾子の構文を示しています。

表 A-1 DEC C for OpenVMS AXPコンパイラの操作モード
モード コマンド修飾子 説明
省略時の設定 /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言語の算術演算データ型のサイズを示しています。

表 A-2 DEC C for OpenVMS AXPコンパイラでの算術演算データ型のサイズ
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


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

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


前へ 次へ 目次 索引