### 表 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命令の 実行時作成への明示的な依存などがある。

[ 本文に戻る ]