日本-日本語
日本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 コンパイラ
ポーティングおよびユーザーズ・ガイド


目次 索引

第 2 部
リファレンス

付録 A
MACRO コンパイラの修飾子

この付録では,MACRO Compiler for OpenVMS systems の起動形式と,そのそれぞれの修飾子について説明します。




MACRO Compiler for OpenVMS systems を起動して, 1 つ以上の VAX MACRO アセンブリ言語ソース・ファイルをコンパイルし, OpenVMS Alpha または OpenVMS I64 のネイティブ・オブジェクト・コードを生成します。


形式

MACRO/MIGRATION filespec[+...]

  注意
OpenVMS Alpha および OpenVMS I64 では, MACRO コマンドのデフォルトは /MIGRATION です。


パラメータ



filespec[+...]

コンパイル対象の VAX MACRO アセンブリ言語ソース・ファイルを指定します。複数のファイルを指定する場合は,ファイル指定をプラス記号 (+) で区切ります。プラス記号で区切ったファイル指定は,1 つの入力ファイルとして連結され,単一のオブジェクト・ファイルとリスト・ファイル (指定されている場合) が生成されます。

  注意
VAX アセンブラと異なり,MACRO コンパイラでは,ソース・ファイルをコンマ (,) で区切ることによる個別のオブジェクト・ファイルの作成はサポートされていません。

ファイル指定ではワイルドカード文字は指定できません。それぞれのファイル指定に対して,デフォルトのファイル・タイプは MAR となります。

コンパイラは,出力先ディレクトリにある既存のファイル (バージョン番号が最も大きなもの) よりもバージョン番号が 1 つ大きな出力ファイルを作成します。


説明

MACRO/MIGRATION コマンドに対する修飾子は,コマンド (グローバル) 修飾子と定位置修飾子のどちらかとなります。 コマンド修飾子は,コマンドで指定されたすべてのファイルに影響します。 定位置修飾子は,それが修飾するファイルにだけ影響します。 /LIBRARY を除くすべての MACRO/MIGRATION 修飾子がコマンド修飾子または定位置修飾子として使用できます。 /LIBRARY 修飾子は,定位置修飾子としてのみ使用できます。

多くの修飾子では 1 つ以上の引数を指定できます。引数を 1 つだけ指定する場合は,括弧を省略できます。

コンパイラは,標準の MACRO 修飾子のほとんどをサポートしています。これらの修飾子のいくつかにはコンパイラ固有のオプションがあり, VAX MACRO のオプションがいくつかサポートされていない修飾子もあります。コンパイラは,コンパイラ固有の修飾子もいくつかサポートしています。これらの修飾子のすべてを 表 A-1 に示しています。

表 A-1 コンパイラ修飾子
標準の MACRO 修飾子 固有の修飾子
/DEBUG /FLAG
/DIAGNOSTICS /MACHINE
/DISABLE 1 /OPTIMIZE
/ENABLE 1 /PRESERVE
/LIBRARY /RETRY_COUNT
/LIST /SYMBOLS
/OBJECT /TIE
/SHOW /UNALIGNED
  /WARN


1コンパイラ固有のオプションが追加されており,一部の VAX MACRO オプションがサポートされていません。


修飾子



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

/NODEBUG

オブジェクト・モジュールのシンボル・テーブルまたはトレースバック情報に,ローカル・シンボルを含めるかどうかを指定します。以下のオプションを 1 つ以上指定できます。

オプション 説明
ALL オブジェクト・モジュール中のローカル・シンボルとトレースバック情報をデバッガで使用できるようにする。この修飾子は,/ENABLE=(DEBUG,TRACEBACK) に相当する。
NONE オブジェクト・モジュール中のローカル・シンボルとトレースバック情報をデバッガで使用できないようにする。この修飾子は,/DISABLE=(DEBUG,TRACEBACK) に相当する。
SYMBOLS オブジェクト・モジュール中のすべてのローカル・シンボルをデバッガで使用できるようにし,すべてのトレースバック情報を使用できないようにする。この修飾子は /ENABLE=SYMBOLS に相当する。
TRACEBACK オブジェクト・モジュール中のトレースバック情報をデバッガで使用できるようにし,ローカル・シンボル情報を使用できないようにする。この修飾子は,/ENABLE=TRACEBACK に相当する。

/DEBUG のデフォルト値は ALL です。 /DEBUG 修飾子は,コマンド行での順序にかかわらず, /ENABLE=(DEBUG,TRACEBACK) や /DISABLE=(DEBUG,TRACEBACK) より優先されます。

  注意
/NOOPTIMIZE を指定することでデバッグが容易になります。この修飾子は,生成されるコードが,ソース行の境界を越えて移動されないようにします。

デバッグについての詳細は, OpenVMS Debugger Manual を参照してください。

/DIAGNOSTICS[=filespec]

/NODIAGNOSTICS (デフォルト)

アセンブラ・メッセージと診断情報が格納されたファイルを作成します。ファイル指定を省略した場合のデフォルトのファイル名はソース・プログラムと同じ名前で,デフォルトのファイル・タイプは DIA です。

ファイル指定ではワイルドカード文字は使用できません。

診断ファイルは,VAX Language-Sensitive Editor (LSE) などのレイヤード・プロダクトで使用するために予約されています。

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

/NODISABLE

MACRO の .DISABLE 指示文と .ENABLE 指示文で制御可能なコンパイラ機能を初期設定します。

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

オプション 説明
DEBUG デバッガが使用するローカル・シンボル・テーブル情報を,オブジェクト・ファイルに含めない。同時に /DEBUG 修飾子も指定すると,コマンド行での順序にかかわらず, /DISABLE=(DEBUG,TRACEBACK) や /ENABLE=(DEBUG,TRACEBACK) より優先される。
FLAGGING コンパイラのメッセージ出力を無効にする。
GLOBAL 未定義のシンボルは外部シンボルであるという想定を無効にする。
OVERFLOW 次のオペレーション・コードに対するオーバフロー・トラップ・コードの生成を無効にする: ADD x,ADWC,INC x,ADAWI, SUB x,SBWC,DEC x,MNEG x, MUL x, CVT xy ( xy よりも大きい。例: CVTLB), AOB xx,ACBL,SOB xx
QUADWORD クォドワードのリテラル式とアドレス式のサポートを無効にする。
SUPPRESSION 参照されていないシンボルをシンボル・テーブルに登録しない。
TRACEBACK トレースバック情報をデバッガに渡さない。同時に /DEBUG 修飾子も指定すると,コマンド行での順序にかかわらず, /DISABLE=(DEBUG,TRACEBACK) や /ENABLE=(DEBUG,TRACEBACK) より優先される。

デフォルトでは,コンパイラの起動時に FLAGGING,GLOBAL,および SUPPRESSION が有効になり,DEBUG,OVERFLOW,QUADWORD,および TRACEBACK が無効になります。

/NODISABLE 修飾子は,/DISABLE 修飾子を省略したのと同じ効果があります。また,コマンド行で先に指定した /DISABLE 修飾子の効果を打ち消すためにも使用できます。

  注意
コマンド行で /DISABLE を 2 回以上使用すると,最後に指定した /DISABLE が優先されます。最後の /DISABLE で指定しなかったオプションは,デフォルト値に戻ります。

さらに,/ENABLE と /DISABLE を同じコマンド行で同じオプションに対して使用すると,コマンド行での位置にかかわらず,常に /DISABLE が優先されます。

対処方法: 2 つ以上のオプションを無効にしたい場合は,次のように指定します。

/DISABLE=(xxxx, yyyy) 
 



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

/NOENABLE

MACRO の .DISABLE 指示文と .ENABLE 指示文で制御可能なコンパイラ機能を初期設定します。

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

オプション 説明
DEBUG デバッガが使用するローカル・シンボル・テーブル情報を,オブジェクト・ファイルに含める。同時に /DEBUG 修飾子も指定すると,コマンド行での順序にかかわらず, /ENABLE=(DEBUG,TRACEBACK) や /DISABLE=(DEBUG,TRACEBACK) より優先される。
FLAGGING コンパイラのメッセージ出力を有効にする。
GLOBAL 未定義のシンボルは外部シンボルであると想定する。
OVERFLOW 次のオペレーション・コードに対するオーバフロー・トラップ・コードの生成を有効にする: ADD x, ADWC,INC x,ADAWI,SUB x, SBWC,DEC x,MNEG x,MUL x, CVT xy ( xy よりも大きい。例: CVTLB),AOB xx,ACBL,SOB xx
QUADWORD クォドワードのリテラル式とアドレス式のサポートを有効にする。
SUPPRESSION 参照されていないシンボルをシンボル・テーブルに登録する。
TRACEBACK トレースバック情報をデバッガに渡す。同時に /DEBUG 修飾子も指定すると,コマンド行での順序にかかわらず, /ENABLE=(DEBUG,TRACEBACK) や /DISABLE=(DEBUG,TRACEBACK) より優先される。

デフォルトでは,コンパイラの起動時に FLAGGING,GLOBAL, TRACEBACK,および SUPPRESSION が有効になり,DEBUG, OVERFLOW,および QUADWORD が無効になります。

/NOENABLE 修飾子は,/ENABLE 修飾子を指定しなかったのと同じ効果があります。また,コマンド行で先に指定した /ENABLE 修飾子の効果を打ち消すためにも使用できます。

  注意
/ENABLE 修飾子のすべてのオプションについて, /ENABLE と /DISABLE を同じコマンド行で同じオプションに対して使用すると,コマンド行での位置にかかわらず,常に /DISABLE が優先されます。

シンボルを使用して以前無効にしたオプションを有効にしたい場合があります。たとえば,次のように,頻繁に使用される以下のオプションを DCL シンボル MAC に対応付けているとします。

MAC::== MACRO/MIGRATION/NOTIE/DISABLE=FLAGGING 

シンボル MAC を使用して FLAGGING を有効にするには,次のコマンドを実行します。

$ MAC /NODISABLE/ENABLE=FLAGGING 



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

/NOFLAG

コンパイラが報告する情報メッセージのクラスを指定します。以下のオプションがあります。

オプション 説明
ALIGNMENT アラインされていないスタックおよびメモリの参照を報告する。
ALL すべてのオプションを有効にする。
ARGLIST 引数リストがホーミングされていることを報告する ( 第 2.4.1 項 を参照) 。
BAD_FIELD_USAGE
( I64 のみ)
BBC/BBS 命令によるビット 32 以降の使用を報告する。
CODEGEN 自己変更コードなど,実行時のコード生成を報告する ( 第 3.2.2 項 を参照) 。
COMPILER_VERSION
( I64 のみ)
コンパイラのバージョンを SYS$ERROR に出力する。
DIRECTIVES サポートされていない指示文を報告する。
HINTS レジスタ・ヒント input/output/auto-preserved を報告する。
INDIRECT_CALLS
( I64 のみ)
間接的な呼び出しで,その前に .USE_LINKAGE 指示文のない CALLS/CALLG 命令を報告する。
INDIRECT_JSB
( I64 のみ)
間接的な呼び出しで,その前に .USE_LINKAGE 指示文のない JSB 命令を報告する。
INSTRUCTIONS コンパイルは成功するものの調査が必要な,絶対アドレスを使用した命令を報告する ( 絶対アドレスはシステムごとに異なる可能性があるため)。
JUMPS ルーチン間での分岐を報告する。
LINKAGE
( I64 のみ)
OpenVMS リンカに渡されるリンケージ情報を報告する。
NONE すべてのオプションを無効にする。
STACK ユーザのスタック操作によって生成されるすべてのメッセージを報告する。

コンパイラの起動時のデフォルトは,/FLAG=(ALIGNMENT, ARGLIST, CODEGEN, DIRECTIVES, INSTRUCTIONS, JUMPS, STACK) です。

  注意
クロス・コンパイラ・メッセージのサブセットを有効にするために, /NOFLAG 修飾子と /FLAG 修飾子を同時に使用しても,期待どおりに機能しません。キーワードが示すメッセージだけを有効にするのではなく, /NOFLAG/FLAG=(keyword,keyword) のように同時に使用すると,すべてのクロス・コンパイラ・メッセージが有効になります。しかし,/FLAG=(none,keyword) を使用すると, keyword で指定したメッセージだけが有効になります。

/NOFLAG や /FLAG=NONE を指定しても,正常なコンパイルを妨げるコーディング構造の報告は無効になりません。上位レベル・スタックの参照など,変更が必要なコードは引き続き報告されます。

/LIBRARY

/NOLIBRARY

定位置修飾子です。

/LIBRARY 修飾子に関連付けられた入力ファイルは,マクロ・ライブラリでなければなりません。デフォルトのファイル・タイプは MLB です。 /NOLIBRARY 修飾子は,/LIBRARY 修飾子を指定しないのと同じ効果があります。また,コマンド行でそれよりも前に指定した /LIBRARY 修飾子の効果を打ち消します。

コンパイラは,最大 16 個のライブラリを検索できますが,その 1 つは常に STARLET.MLB です。この数は,特定のコンパイルに適用され,必ずしも特定の MACRO コマンドに適用されるわけではありません。複数のソース・ファイルをコンパイルするように MACRO コマンドを入力する場合に,ソース・ファイルを別々にコンパイルする場合は,それぞれのコンパイルで最大 16 個のマクロ・ライブラリを指定できます。一度のコンパイルで複数のマクロ・ライブラリを指定すると,指定した順序とは逆の順序でライブラリが検索されます。

ソース・プログラム中にマクロ呼び出しがあると,マクロが未定義の場合,次の検索シーケンスが開始されます。

  1. まず,.LIBRARY 指示文で指定したライブラリが,指定した順序とは逆の順序で検索されます。

  2. .LIBRARY 指示文で指定したライブラリにマクロ定義が見つからない場合は, MACRO コマンド行で指定したライブラリが検索されます (指定した順序と逆の順序で検索されます)。

  3. コマンド行で指定したライブラリにマクロ定義が見つからなかった場合は, STARLET.MLB が検索されます。



/LIST[=filespec]

/NOLIST

出力リストを作成するかどうかを指定し,オプションで出力ファイルを指定します。リスト・ファイルのデフォルトのファイル・タイプは LIS です。ファイル指定ではワイルドカード文字は使用できません。

対話型の MACRO コマンドは,デフォルトではリスト・ファイルを生成しません。 /NOLIST 修飾子を明示的に (またはデフォルトで) 指定すると,エラーは現在の出力デバイスに報告されます。

/LIST 修飾子は,バッチ・ジョブにおける MACRO コマンドではデフォルトとなります。 /LIST 修飾子では,コマンド行の中の修飾子の位置によって,出力ファイル指定に適用するデフォルトを制御することができます。

/MACHINE

/NOMACHINE (デフォルト)

この修飾子と /LIST 修飾子を同時に指定することで,機械語コードのリスト出力が有効になります。

/OBJECT[=filespec]

/NOOBJECT

オブジェクト・モジュールを作成するかどうかを指定し,またファイル指定を定義します。デフォルトでは,コンパイラは最初の入力ファイルと同じ名前でオブジェクト・モジュールを作成します。オブジェクト・ファイルのデフォルトのファイル・タイプは OBJ です。ファイル指定ではワイルドカード文字は使用できません。

/OBJECT 修飾子では,コマンド行での修飾子の位置によって,出力ファイル指定に適用するデフォルトを制御することができます。

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

/NOOPTIMIZE

最適化オプションの有効と無効を切り替えます。 VAXREGS を除くすべてのオプションは,デフォルトで有効になっています ( 第 4.3.1 項 を参照) 。

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

オプション 説明
[NO]PEEPHOLE のぞき穴式最適化
[NO]SCHEDULE コードのスケジューリング
[NO]ADDRESSES 共通ベース・アドレスによるロード
[NO]REFERENCES 共通データ参照
[NO]VAXREGS OpenVMS Alpha システムのみ: VAX レジスタ (R0 〜 R12) が使用されていなければ,それを一時レジスタとして使用することを許可します。
ALL すべての最適化
NONE 最適化なし


目次 索引

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