分享方式:


PROC

標記稱為 標籤的程式區塊開頭和結尾。 區塊中的語句可以使用 CALL 指令或 INVOKE 指示詞來呼叫

語法

label PROCdistance⟧ ⟦language-type⟧ ⟦ PUBLIC | PRIVATE | EXPORT ⟧ ⟦<prologuearg> ⟦USES reglist⟧ ⟦ parametertag⟧ ...
⟦FRAMEehandler-address⟧ ⟧
語句
標籤 ENDP

備註

⟦distance⟧ 和 ⟦language-type⟧ 自變數只在 32 位 MASM 中有效。

⟦FRAMEehandler-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

另請參閱

指示詞參考
MASM BNF 文法