日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部 : 概念と方法
第 1 章:Macro-32コードの移植の準備
第 2 章:MACROコンパイラのプラットフォームごとの動作
第 3 章:ソースに対する推奨される変更と必要な変更
第 4 章:移植したコードの性能改善
第 5 章:MACROの64ビット・アドレッシングのサポート
第 2 部:リファレンス・セクション
付録 A :MACROコンパイラの修飾子
付録 B :専用の指示文
付録 C :MACROコンパイラ・ビルトイン
付録 D :VAXからAlphaまたはI64への移植用のマクロ
付録 E :64ビット・アドレッシング用のマクロ
索引
PDF
OpenVMS ホーム
HP OpenVMS MACRO コンパイラポーティングおよびユーザーズ・ガイド

HP OpenVMS MACRO コンパイラ
ポーティングおよびユーザーズ・ガイド


目次 索引

OpenVMS Alpha システムでは, /OPTIMIZE=ALL を指定すると VAXREGS が有効になり,モジュール中のすべてのルーチンのすべてのレジスタの使用が正しく宣言されていないと,正しくないコードが生成されます。

/PRESERVE[=(option[,...])]

/NOPRESERVE (デフォルト)

モジュール全体のすべての VAX MACRO 命令に対して, VAX が持つ操作の不可分性と細分性に依存した特別な OpenVMS Alpha または OpenVMS I64 のコードを生成するように,コンパイラに指示します ( 第 2.11 節 を参照) 。

オプションは以下のとおりです。

オプション 説明
GRANULARITY VAX の書き込みの細分性の規則を維持する。 /PRESERVE=GRANULARITY を指定すると,コンパイラは,バイト,ワード,またはアラインされていないロングワードの書き込みを実行する VAX 命令に対して生成するコードの中で, Alpha の Load-locked 命令シーケンスと Store-conditional 命令シーケンス,または Itanium の compare-exchange (cmpxchg) 命令を使用する。
ATOMICITY VAX の変更操作の不可分性を維持する。 /PRESERVE=ATOMICITY を指定すると,コンパイラは,変更オペランドを伴う VAX 命令に対して生成するコードの中で, Alpha の Load-locked 命令シーケンスおよび Store-conditional 命令シーケンス,または Itanium の compare-exchange (cmpxchg) 命令を使用する。

/PRESERVE と /PRESERVE=(GRANULARITY,ATOMICITY) は同じです。細分性と不可分性の維持がどちらも有効になり,細分性と不可分性の両方の保証が必要な VAX コーディング構造が見つかると,細分性よりも不可分性が優先されます。

VAX の細分性と不可分性の保証が必要な VAX MACRO コードのセクションがある場合は,モジュール全体に対してこれらの保証を適用するようにコンパイラに指示する必要はありません。代わりに,.PRESERVE 指示文と .NOPRESERVE 指示文を使用し ( 付録 B を参照) ,これらのセクションだけに保証を適用することができます。コンパイラは,モジュール全体に対して膨らんだコードを生成する必要がないため,これらの指示文によってコードが最適化されます。

/PRESERVE=ATOMICITY を指定すると,ユニプロセシング・システムだけでなく,マルチプロセシング・システムでも不可分性が保証されます。

/PRESERVE 修飾子があるときには,/RETRY_COUNT 修飾子を指定することで,細分性または不可分性が保証された更新を,コンパイラが生成するコードで何度リトライするかを制御できます。

  警告
/PRESERVE=ATOMICITY を有効にすると,アラインされていないデータ参照はすべて回復不可能な予約オペランド・フォルトになります。 第 2.11.5 項 を参照してください。また,/PRESERVE=GRANULARITY を有効にすると,アラインされていると想定されたアドレスに対するアラインされていないワード参照は,回復不可能な予約オペランド・フォルトになります。



/RETRY_COUNT=count

コンパイラに対し,生成されるコード中で以下の操作を実行する回数を指定します。

  • VAX のインターロックされる命令を使って,ソース内で実行される操作のリトライ回数。

  • /PRESERVE 修飾子または .PRESERVE 指示文がある場合の,不可分性または細分性を保証するための更新のリトライ回数。

/RETRY_COUNT 修飾子がない場合,コンパイラは無限にこれらの操作をリトライするコードを生成します。

/SHOW[=(function[,...])]

/NOSHOW[=(function[,...])]

コンパイラ指示文 .SHOW および .NOSHOW によって制御される機能を初期設定します。

以下の機能を 1 つ以上指定することができます。

オプション 説明
CONDITIONALS .IF 指示文と .ENDC MACRO 指示文に関連付けられた満たされない条件付きコードをリスト出力する。
CALLS マクロ呼び出しと繰り返し範囲の展開をリスト出力する。
DEFINITIONS マクロ定義をリスト出力する。
EXPANSIONS マクロ展開をリスト出力する。
BINARY マクロ呼び出しの展開によって生成されるバイナリ・コードをリスト出力する。



/SYMBOLS

/NOSYMBOLS (デフォルト)

コマンド行でこの修飾子と /LIST 修飾子がともに指定されている場合,リスト・ファイルに対し,シンボル・テーブルと psect 一覧テーブルを生成します。

/TIE (OpenVMS Alpha でのデフォルト)

/NOTIE (OpenVMS I64 でのデフォルト)

トランスレートされたイメージに対して,適切な外部コールアウトを生成します。トランスレートされたイメージとは, DECmigrate (VEST とも呼ばれます) ファシリティによって変換されたイメージです。 TIE (Translated Image Environment) を使用すると, OpenVMS VAX システム上で動作しているかのように,トランスレートされたイメージを実行できます。トランスレートされたイメージを呼び出さない場合は,性能を向上させるために /NOTIE を使用してください。

/UNALIGNED

/NOUNALIGNED (デフォルト)

すべてのレジスタ・ベースのメモリ参照に対して,アラインされていないロードと格納を使用するようにコンパイラに指示します (FP ベースの参照や SP ベースの参照,またはローカルにアラインされた静的データへの参照を除く)。

デフォルトでは,コンパイラはベース・ポインタとして使用されるレジスタ中のアドレス (FP ベースのポインタや SP ベースのポインタを除く) は,ルーチンの入口でロングワードにアラインされているものと想定し, BYTE,WORD,および LONG のデータをそれに応じてロードするコードを生成します。その結果,想定が正しくないと,実行時にアラインメント・フォルトが発生し,性能に大きな影響が出ます。 /UNALIGNED を指定すると,コンパイラは,ポインタがアラインされていないものと想定してコードを生成します。このコードはかなり大きくなりますが,アラインメント・フォルトを処理するよりも効率が良くなります。

  注意
コンパイラはクォドワード・レジスタのアラインメントを追跡しません。クォドワードのメモリ参照 (VAX の MOVQ 命令など) では,レジスタ追跡コードによってアドレスがロングワードにアラインされていない可能性があることが分かっていないかぎり,コンパイラはベース・アドレスがクォドワードにアラインされていることを想定します。 OpenVMS Alpha および OpenVMS I64 のビルトインでのクォドワードの参照は,常にクォドワードにアラインされているものと想定されます。これらは必ず新しいコードにあるため,データは正しくアラインされているはずです。

/UNALIGNED 修飾子は,通常,データがアラインされていないことが多いが,ソース中のデータ・アラインメントを訂正することでメリットが得られるほど高い性能を必要としないモジュールにのみ適しています。

/WARN=[[option]...]

/NOWARN

情報レベルのメッセージまたは警告レベルのメッセージをすべて無効にします。どちらもデフォルトで有効になっています。以下のオプションがあります。

オプション 説明
INFO 情報レベルのメッセージをすべて有効にする。
NOINFO 情報レベルのメッセージをすべて無効にする。
WARN 情報レベルのメッセージと警告レベルのメッセージをすべて有効にする。
NOWARN 情報レベルのメッセージと警告レベルのメッセージをすべて無効にする。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.