日本-日本語
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:移行プロセスの概要
第 2 章:移行方法の選択
第 3 章:アプリケーションの移行
第 4 章:再コンパイルと再リンクの概要
第 5 章:ページ・サイズの拡大に対するアプリケーションの対応
第 6 章:共有データの整合性の維持
第 7 章:アプリケーション・データ宣言の移植性の確認
第 8 章:アプリケーション内の条件処理コードの確認
第 9 章:アプリケーションのトランスレート
第 10 章: ネイティブなイメージとトランスレートされたイメージの間の相互操作性の確認
第 11 章:OpenVMS Alpha コンパイラ
付録 A :アプリケーション評価チェックリスト
用語集
索引
PDF
OpenVMS ホーム
OpenVMS Alpha オペレーティング・システム | HPE 日本

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


目次 索引

第 3 章
アプリケーションの移行

アプリケーションを実際にAlphaシステムに移行する作業は,次に示すように複数の段階に分かれています。

  1. 移行環境を設定する

  2. 移行評価の基礎を設定するためにVAXシステムでアプリケーションをテストする

  3. Alphaシステムで実行するためにアプリケーションを変換する

  4. 移行したアプリケーションをデバッグおよびテストする

  5. 移行したアプリケーションをソフトウェア・システムに統合する



3.1 移行環境の設定

ネイティブなAlpha環境は,VAXシステムと同様に完全な開発環境です

現在のところ,移行したアプリケーションのデバッグおよびテストは, Alphaシステム上で行わなければなりません。

Alpha移行環境の重要な要素はDECからサポートされ,DECはアプリケーションの変更,デバッグ,およびテストのために必要な支援を提供します。

3.1.1 ハードウェア

移行のためにどのハードウェアが必要かを計画する場合,複数の問題を検討しなければなりません。まず,通常の VAX 開発環境でどのような資源が必要であるかを検討してください。

  • CPU

  • ディスク

  • メモリ

Alpha移行環境にとって必要な資源を見積もるには,次の問題を考慮しなければなりません。

  • Alphaシステムでは,イメージ・サイズが従来より大きくなること
    VAXシステムとAlphaシステムとの間で,コンパイルしたイメージとトランスレートしたイメージを比較してください。

  • Alphaシステムでは,ページ・サイズと物理メモリ・サイズが従来より大きくなること

  • 必要なCPU

VESTを使用すると,多くのCPU時間が必要となります (実際に必要なCPU時間を予測することは困難です。これは,必要なCPU時間は,アプリケーションのサイズよりもアプリケーションの複雑さに大きく依存するからです)。また,VESTを使用する場合,ログ・ファイルのためのディスク空間,Alphaイメージのためのディスク空間,フローグラフのためのディスク空間などが大量に必要になります。新しいイメージには,元のVAX命令と新しい Alpha命令の両方が含まれます。したがって,元のVAXイメージより必ず大きくなります。

望ましい構成は次のとおりです。

  • 256 MBのメモリを装備した6 VUP以上のマルチプロセッサ・システム

  • 1 GBのシステム・ディスク

  • 各アプリケーション当り1 GBのディスク

マルチプロセッサ・システムでは,各プロセッサが別々のアプリケーションのイメージ分析を行うことができます。

コンピユータ資源が不足する場合には,次のいずれかの処置で対処してください。

  • コンパイラまたはVESTは,作業量の少ない時刻にバッチ・ジョブとして実行してください。

  • 移行作業のために必要な機器をリースしてください。



3.1.2 ソフトウェア

効率のよい移行環境を構築するには,次の要素を確認しなければなりません。

  • 移行ツール
    次のツールも含めて,互換性のある移行ツールが必要です。

    • コンパイラ

    • トランスレーション・ツール

      • VEST と VEST/DEPENDENCY

      • TIE

    • RTL

    • システム・ライブラリ

    • Cプログラムのためのインクルード・ファイル

  • 論理名
    VAXバージョンとAlphaバージョンのツールとファイルをそれぞれ適切に指すように,論理名は矛盾のないように定義しなければなりません。詳しくは 第 3.4 節 を参照してください。

  • コンパイルとリンク・プロシージャ
    これらのプロシージャは新しいツールおよび新しい環境に適合するように調整しなければなりません。

  • ソースの管理とイメージのビルドのためのツール

    • CMS

    • MMS

ネイティブなAlpha開発

VAXで使用できる標準的な開発ツールはすべて,Alphaシステムでもネイティブ・ツールとして提供されています。

トランスレーション

VESTソフトウェア・トランスレータはVAXシステムとAlphaシステムの両方で実行されます。Translated Image Environment (TIE)はトランスレートされたイメージを実行するために必要な環境であり,OpenVMS Alphaの一部です。したがって,トランスレートされたイメージの最終的なテストはAlphaシステムで実行しなければなりません。

3.2 アプリケーションの変換

コードを完全に分析し,移行計画を適切に作成している場合には,この最終段階はかなり簡単に終了できます。多くのプログラムはまったく変更せずに再コンパイルまたはトランスレートできます。直接に再コンパイルまたはトランスレートできないプログラムでも,多くの場合,簡単な変更だけで Alpha システムで実行できるようになります。

コードの実際の変換についての詳しい説明は,OpenVMS Alphaの移行に関する次の解説書を参照してください。

  • 『DECmigrate for OpenVMS AXP Systems Translating Images』

  • 『OpenVMS MACRO-32 Porting and User's Guide』

これらの各解説書についての説明は,本書のまえがきを参照してください。

2つの移行環境と,各環境で使用される基本的なツールは, 図 3-1 に示すとおりです。

図 3-1 移行環境とツール




一般に,アプリケーションを移行する場合には,コードの変更,コンパイル,リンク,およびデバッグを繰り返し実行しなければなりません。これらの処理を実行することにより,開発ツールから指摘されたすべての構文エラーとロジック・エラーを解決します。通常,構文エラーは簡単に修正できますが,ロジック・エラーを修正するには,コードの大幅な変更が必要になります。

新しいコンパイラ・スイッチやリンカ・スイッチに対応するために,コンパイル・コマンドとリンク・コマンドは,ある程度変更しなければなりません。たとえば,複数のAlphaプラットフォーム間で移植可能にするために,リンカは Alphaシステムの省略時のページ・サイズを64KBとして設定します。この結果,各プロセッサのシステム・ページ・サイズとは無関係に,OpenVMS AlphaイメージはどのAlphaプロセッサでも実行可能になります。また,Alphaの共有可能イメージは,普遍的なエントリ・ポイントとシンボルを宣言するために, VAX転送ベクタ・メカニズムではなく,リンカ・オプション・ファイル内のシンボル・ベクタ宣言を使用します。

Alphaプラットフォームでソフトウェアを開発し,移行するために,多くのネイティブ・コンパイラとその他のツールが提供されます。

既存のVAXソースを再コンパイルおよび再リンクすると,ネイティブなAlphaイメージが作成され,このイメージはRISCアーキテクチャの性能上の利点をすべて利用して, Alpha環境で実行されます。Alphaコードでは,一連の高度に最適化されたコンパイラを使用します。これらのコンパイラは共通の最適化コード・ジェネレータを備えています。しかし,各言語に対して異なるフロント・エンドを使用し,これらの各フロント・エンドは現在のVAXコンパイラと互換性があります。

OpenVMS Alpha オペレーティング・システムバージョン 7.1 では,次の言語に対してネイティブな Alphaコンパイラが提供されています。

  • Ada

  • BASIC

  • C

  • C++

  • COBOL

  • FORTRAN

  • Pascal

  • PL/I

  • MACRO-32 (クロス・コンパイラ)

OpenVMS Alphaの将来のリリースでは,LISPも含めた他の言語のためのネイティブ・コンパイラも提供されます。

他の言語で作成されたユーザ・モードのVAXプログラムは,VESTを使用してトランスレートすることにより,Alphaシステムで実行できます。また,サード・パーティからも他の言語のためのコンパイラが提供されます。

一般に,Alphaコンパイラには,コマンド・ライン修飾子と言語セマンティックが準備されており,VAXアーキテクチャに依存するコードをほとんど変更せずに, Alphaシステムでも実行できるようにしています。このようなVAXアーキテクチャへの依存のリストについては, 表 2-3 を参照してください。

OpenVMS Alpha システムの一部のコンパイラは,OpenVMS VAX システムの対応するコンパイラでサポートされない新しい機能をサポートします。互換性を維持するために,一部のコンパイラは互換性モードをサポートします。たとえば, OpenVMS Alpha システム用の DEC C コンパイラでは, VAX C 互換性モードをサポートし,このモードは /STANDARD=VAXC 修飾子を指定することにより起動されます。

場合によっては,互換性が制限されます。たとえば,VAX C では,特殊な VAX ハードウェア機能にアクセスできるようにするための組み込み関数をインプリメントしています。VAX コンピュータのハードウェア・アーキテクチャは Alpha コンピュータのアーキテクチャと異なるため,これらの組み込み関数は, /STANDARD=VAXC 修飾子を使用した場合でも, OpenVMS Alpha システム用の DEC C コンパイラでは使用できません。

また,コード内に存在する可能性のあるアーキテクチャに依存する部分をコンパイラである程度補正することもできます。たとえば, MACRO--32 コンパイラには /PRESERVE 修飾子があり,粒度と不可分性のどちらか一方または両方を維持できます。

DEC C コンパイラにはヘッダ・ファイルがあり,各データ型に対してマクロを定義しています。これらのマクロは,int64 などの汎用データ型の名前を __int64 などのマシン固有のデータ型に変換します。たとえば, 64 ビットの長さのデータ型が必要な場合には,int64 マクロを使用します。

移植性をサポートするすべての機能の詳細については,コンパイラのマニュアルを参照してください。

Alpha コンパイラを使用して,OpenVMS VAX プログラムを OpenS Alpha システムに移行する処理の詳細については, 第 11 章 を参照してください。

既存の VAX MACRO コードを OpenVMS Alpha システムで動作するマシン・コードに変換するには,MACRO--32 Compiler for OpenVMS Alpha を使用します。OpenVMS Alpha にはその目的で,このコンパイラが含まれています。

一部の VAX MACRO コードは変更せずにコンパイルできますが,大部分のコード・モジュールでは,エントリ・ポイント指示文を追加する必要があります。また,多くのコード・モジュールではその他の変更も必要です。

注意

MACRO--32 コンパイラは,ソース・コードに LIB$ESTABLISH が含まれている場合には,それを呼び出そうとします。

MACRO--32 プログラムが 0(FP) のルーチン・アドレスを格納することにより,動的ハンドラを確立する場合には,OpenVMS Alpha システムでコンパイルしても,そのプログラムは正しく動作します。しかし, CALL_ENTRY ルーチンの内部からでなければ, JSB (Jump to Subroutine) ルーチンの内部から条件ハンドラ・アドレスを設定することはできません。

コンパイラは OpenVMS Alpha システム用に最適化されたコードを生成しますが,高レベルの制御機能をプログラマに提供する VAX MACRO 言語の多くの機能は, OpenVMS Alpha システム用の最適なコードを生成することを困難にします。 OpenVMS Alpha 用に新たなプログラムを開発する場合には,中級言語または高級言語を使用することをお勧めします。 MACRO--32 コンパイラの詳細については,『OpenVMS MACRO-32 Porting and User's Guide』を参照してください。

ネイティブなAlphaイメージを作成するために,コンパイラの他にもいくつかのツールが提供されます。

  • OpenVMSリンカ
    OpenVMS リンカは,VAXオブジェクト・ファイルまたはAlphaオブジェクト・ファイルを受け付け,VAXイメージまたはAlphaイメージを作成できるようになりました。また, VAXハードウェアでAlphaイメージを作成できるため,クロス・リンカとして機能します。

  • OpenVMSデバッガ
    OpenVMS Alphaで実行されるOpenVMS デバッガは,現在のOpenVMS VAXデバッガと同じコマンド・インターフェイスを使用します。OpenVMS Alphaシステムでも,VAXシステム上のグラフィカル・インターフェイスが提供されています。

  • OpenVMS ライブラリアン・ユーティリティ
    OpenVMS ライブラリアン・ユーティリティは,VAXライブラリまたは Alphaライブラリを作成します。

  • OpenVMS メッセージ・ユーティリティ
    OpenVMS メッセージ・ユーティリティを使用すれば,OpenVMSシステム・メッセージに独自のメッセージを追加できます。

  • MACRO--64 Assembler for OpenVMS Alpha
    OpenVMS Alpha システム用の MACRO--64 アセンブラは,すべての Alpha コンピュータを対象にしたネイティブ・アセンブラです。VAX MACRO アセンブラは OpenVMS VAX オペレーティング・システムに含まれていますが,MACRO--64 アセンブラは OpenVMS Alpha オペレーティング・システムに含まれていません。このアセンブラは個別に購入できます。一般に,中級言語および高級言語コンパイラは,MACRO--64 アセンブラより性能の高いコードを OpenVMS Alpha システム用に生成します。OpenVMS Alpha システム用に新たなプログラムを開発する場合には,中級コンパイラまたは高級コンパイラのご使用をお勧めします。 MACRO--64 アセンブラの詳細については,『MACRO--64 Assembler for OpenVMS AXP Systems Reference Manual』を参照してください。

  • ANALYZE/IMAGE
    ANALYZE/IMAGEユーティリティはVAXイメージまたはAlphaイメージを分析できます。

  • ANALYZE/OBJECT
    ANALYZE/OBJECTユーティリティはVAXオブジェクトまたはAlphaオブジェクトを分析できます。

  • DECset
    DECsetは包括的なCASEツール群であり,Language Sensitive Editor (LSE), Source Code Analyzer (SCA),Code Management System (CMS), Module Management System (MMS)をはじめ,多くの要素で構成されます。



3.2.2 トランスレーション

Alphaシステムで実行するためにVAXイメージをトランスレートする処理については,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。一般に,この処理は簡単ですが,エラーなしにトランスレートするには,コードを少し変更しなければならないことがあります。

ユーザ・モードのVAXイメージをOpenVMS Alphaに移行するための主なツールは,静的トランスレータと実行時サポート環境です。

  • VAX Environment Software Translator (VEST)は,VAXイメージを分析し,イメージをトランスレートし,同じ機能を実行するイメージを作成するユーティリティです。VESTを使用すれば,次の処理が可能です。

    • VAXイメージをトランスレートできるかどうかを判断する

    • VAXイメージをAlphaイメージにトランスレートする

    • イメージ内でOpenVMS Alphaと互換性のない部分を識別し,これらの互換性のない部分をソース・ファイルで修正する方法を入手する

    • トランスレートされたイメージの実行時の性能を改善する方法を判断する

  • Translated Image Environment (TIE)は,トランスレートされたイメージを実行時にサポートするAlphaの共有可能イメージです。TIEは,トランスレートされたイメージを実行するためにOpenVMS VAXに類似した環境を準備し,ネイティブな Alphaシステムとのすべてのやりとりを処理します。TIEには次の要素が含まれています。

    • VAX命令インタプリタ
      次の機能をサポートします。

      • VAXシステムでの実行に類似したVAX命令の実行(命令の不可分性も含む)

      • サブルーチンとしての複雑なVAX命令

    • VAXと互換性のある例外ハンドラ

    • ネイティブ・コードとトランスレートされたコードの間のやりとりを可能にするジャケット・ルーチン

    • エミュレートされたVAXスタック

    トランスレートされたイメージを実行する場合には,TIEが自動的に起動されます。 TIEを呼び出す必要はありません。

VESTは,できるだけ多くのVAXコードをAlphaコードにトランスレートします。TIEは, Alpha命令に変換できなかったVAXコードを解釈します。たとえば,次のコードは TIEによって解釈されます。

  • VESTが静的に識別できなかった命令

  • H浮動小数点およびD56 (56ビットのD浮動小数点)浮動小数点演算

命令の解釈は速度の遅い処理であり,おそらく平均的な1つのVAX命令に対して100前後の Alpha命令が必要となるため,VESTは実行時にインタプリタを通じた解釈の必要性をできるだけ少なくするために,できるだけ多くのVAXコードをトランスレートしようとします。トランスレートされたイメージは,ネイティブなAlphaイメージと比較すると,約3分の1の速度で実行されます。ただし,この速度はTIEがどれだけのVAXコードを解釈しなければならないかに応じて異なります。トランスレートされたVAXイメージは,少なくともVAXハードウェアと同じ速度で実行されます(同じレベルのプロセス技術を使用したCPUの場合)。

AlphaシステムでVAXイメージの動的解釈を指定することはできません。イメージを OpenVMS Alphaで実行するには,その前にVESTを使用してイメージをトランスレートしなければなりません。

VAXイメージをトランスレートすると,Alphaハードウェアで実行されるイメージが作成されます。このようにして作成されるAlphaイメージは,単にVAXイメージを解釈したバージョンやエミュレートしたバージョンではなく,元のVAXイメージ内の命令が実行する操作と同じ操作を実行するAlpha命令を含むイメージです。Alphaの .EXEファイルには,元のVAXイメージが完全に登録されているため,TIEはVESTがトランスレートできなかったコードを解釈できます。

VESTの分析機能は,トランスレートする場合だけでなく,再コンパイルする予定のプログラムを評価する場合も役立ちます。

VESTとTIEについての詳しい説明は,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。このマニュアルでは,フローグラフなども含めて,VESTが作成するすべての出力とその解釈方法が詳しく説明されています。また,VESTが作成するイメージ情報ファイル(IIF)から提供される情報を利用して,トランスレートされたイメージの実行時の性能を向上する方法も説明されています。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡