表 2-3 移行方式の選択: アーキテクチャに依存する部分の取り扱い

再コンパイル/再リンクしたVAXソース トランスレートされたVAXイメージ
データ・アラインメント[1]
省略時の設定では, 大部分のコンパイラはデータを自然なアラインメントにする。 VAXアラインメントを保存するための修飾子についての説明は, 第11章を参照。 アラインされていないデータもサポートされるが, /OPTIMIZE=ALIGNMENT修飾子を使用すれば, データがロングワードにアラインされていることを仮定することにより, 実行速度を向上できる。
データ型
H浮動小数点はX浮動小数点に変更する。

D浮動小数点の場合,D53フォーマットの15桁の精度で十分なときは,D浮動小数点を G浮動小数点に変更する。アプリケーションで16桁の精度(D56フォーマット) が必要な場合には,トランスレートしなければならない。

COBOLのパック10進数は操作のために自動的にバイナリ形式に変換される。

詳しくは第7章を参照。

D浮動小数点の16桁の精度が必要な場合には, /FLOAT=D56_FLOAT修飾子を使用する。この修飾子を使用した場合,性能は, 省略時の設定である/FLOAT=D53_FLOATを使用した場合より低下する。
読み込み/変更/書き込み操作の不可分性
サポートは各コンパイラが準備しているオプションに応じて異なる (詳しくは第6章を参照)。 /PRESERVE=INSTRUCTION_ATOMICITY修飾子を使用する。 実行速度は半分に低下する。
バイト書き込み操作とワード書き込み操作の不可分性と粒度
適切にソース・コードを変更し, コンパイラ・オプションを使用することによりサポートされる(詳しくは 第6章を参照)。 /PRESERVE=MEMORY_ATOMICITY修飾子を使用する。 実行速度は半分に低下する。
ページ・サイズ
OpenVMSリンカは省略時の設定により,大きい Alphaスタイルのページを作成する。 512バイトのページ・イメージの大部分はサポートされる。しかし, VESTはゆるやかな保護を割り当てるため, アクセス違反を検出するために厳しい保護に依存しているイメージを, トランスレートした場合,Alphaシステムで正しく実行されない。
読み込み/書き込みの順序
適切な同期命令(MB) をソース・コードに追加することによりサポートされるが,性能は低下する。 (詳しくは第6章を参照。) /PRESERVE=READ_WRITE_ORDERING修飾子を使用する。
例外報告の即時性
コンパイラ・オプションの使用によって部分的にサポートされる (詳しくは第8章を参照)。 /PRESERVE=FLOAT_EXCEPTIONS修飾子または /PRESERVE=INTEGER_EXCEPTIONS修飾子を使用する。実行速度は半分に低下する。
VAXアーキテクチャおよび呼び出し規則への明示的な依存[2]
サポートされない。依存する部分は削除しなければならない。 サポートされる。
[1] アラインされていないデータは主に性能上の問題となります。 アラインされていないデータを参照した場合, VAXシステムでは性能をある程度低下させるだけですが, Alphaシステムでアラインされていないデータをメモリからロードしたり, アラインされていないデータをメモリに格納すると, アラインされた操作の場合より最高100倍も時間がかかる可能性があります。

[2] VAXアーキテクチャ固有の機能や呼び出し規則への依存としては,VAX呼び出し規則, VAX例外処理,VAX ASTパラメータ・リスト,VAX命令の形式と動作,およびVAX命令の 実行時作成への明示的な依存などがある。


[ 本文に戻る ]