Share via


PROC

label という名前のプロシージャ ブロックの開始と終了を示します。 ブロック内のステートメントは、CALL 命令または INVOKE ディレクティブで呼び出すことができます。

label PROC [[distance]] [[langtype]] [[visibility]] [[<prologuearg>]] 
   [[USES reglist]] [[, parameter [[:tag]]]]...
   [FRAME [:ehandler-address] ]
   statements
   label ENDP

パラメーター

  • label
    プロシージャの名前を定義します。 次の名前付け規則langtype。

  • prologuearg
    プロローグ プロシージャに渡す引数。 デフォルトのPROLOGUEとEPILOGUE、FORCEFRAME引数は、1 つは必要ではない場合でも、スタック セグメントを生成します。 LOADDS原因で保存するには、DS レジスタ、PROLOGUEおよび復元ので、EPILOGUE。 パラメーターは、コンマで区切る必要があります。 角かっこが必要である渡されない。

  • distance
    Can be NEAR, FAR, NEAR16, NEAR32, FAR16, or FAR32. このプロシージャの呼び出しの距離を示します。 場合は、選択NEARまたはFAR、アセンブラーが 16 ビットまたは 32 ビットを選択しますNEARまたはFAR現在のセグメントのサイズによって異なります。 このオプションを指定しない場合は、アセンブラーはメモリとプロセッサの種類からの距離を決定します。 NEAR使用しない場合、既定である、.MODELディレクティブ。

  • langtype
    任意の有効な言語の型。 スタイルと呼び出しの名前付け規則を決定します。

  • visibility
    Can be PRIVATE, PUBLIC, or EXPORT. 決定の手順どのように他のモジュールを利用可能になります。 PUBLIC標準の既定では、ですが、デフォルトをリセットすることができます、OPTION PROCディレクティブ。 EXPORT意味PUBLICとFARとプロシージャ エントリのエクスポート テーブルに配置する必要があること、リンカーを通知します。

  • reglist
    終了時にスタックに保持されますプロローグ エピローグ レジスタの一覧を復元します。 別の複数のスペースを登録します。

  • parameter
    プロシージャのパラメーター。 アセンブラーは、引数参照、スタックの場所への直接参照に変換します。 複数の引数をコンマで区切ります。

  • tag
    いずれか修飾型またはVARARG。 VARARGカンマで区切られたリストとして < の引数 > に渡される引数の数が変数をできます。 場合VARARGは、それの最後のパラメーターに適用する必要があります、PROCディレクティブ。 VARARGのみを許可されて、C、SYSCALL、およびSTDCALL言語の種類。 場合tagは省略され、アセンブラーの既定値にWORD、16 ビット セグメントまたはDWORD、32 ビット セグメントで。

  • statements
    アセンブリ言語のステートメントとディレクティブ。

解説

[FRAME [:ehandler-address] ] は、ml64.exe でのみ有効で、これにより MASM は、関数の構造化例外処理アンワインド動作として、.pdata に関数テーブル エントリを、.xdata にアンワインド情報を生成します。

FRAME 属性を使用する場合、.ENDPROLOG ディレクティブの前に置く必要があります。

ml64.exe の使い方の詳細については、「x64 用 MASM (ml64.exe)」を参照してください。

使用例

; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   push r10
.pushreg r10
   push r15
.pushreg r15
   push rbx
.pushreg rbx
   push rsi
.pushreg rsi
.endprolog
   ; rest of function ...
   ret
Example1 ENDP
_text ENDS
END

上記のコードにより、以下の関数テーブルとアンワインド情報が生成されます。

FileHeader->Machine 34404
Dumping Unwind Information for file ex2.exe

.pdata entry 1 0x00001000 0x00001023

  Unwind data: 0x00002000

    Unwind version: 1
    Unwind Flags: None
    Size of prologue: 0x08
    Count of codes: 3
    Frame register: rbp
    Frame offset: 0x0
    Unwind codes:

      Code offset: 0x08, SET_FPREG, register=rbp, offset=0x00
      Code offset: 0x05, ALLOC_SMALL, size=0x10
      Code offset: 0x01, PUSH_NONVOL, register=rbp

参照

その他の技術情報

ディレクティブ リファレンス