Teilen über


PROC

Markiert den Anfang und das Ende eines Prozedurblocks, der als Bezeichnung bezeichnet wird. Die Anweisungen im Block können mit der CALL-Anweisung oder DER INVOKE-Direktive aufgerufen werden.

Syntax

label PROCdistance⟧ ⟦language-type⟧ ⟦ PUBLIC | PRIVATE | EXPORT ⟧ ⟦<prologuearg>⟧ ⟦USES reglist⟧ ⟦, parameter:tag⟧ ... ⟧
⟦FRAME:ehandler-address⟧ ⟧
Aussagen
Bezeichnung ENDP

Hinweise

Die Argumente ⟦Abstand⟧ und ⟦Sprachtyp⟧ sind nur in 32-Bit-MASM gültig.

⟦FRAME:ehandler-address⟧ ⟧ ist nur für ml64.exe gültig und bewirkt, dass MASM einen Funktionstabelleneintrag in .pdata generiert und Informationen in XData für das strukturierte Ausnahmebehandlungsverhalten einer Funktion entspannt.

Wenn das FRAME-Attribut verwendet wird, muss es von einem . ENDPROLOG-Direktive .

Weitere Informationen zur Verwendung von ml64.exe finden Sie unter MASM für x64 (ml64.exe ).

Beispiel

; 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

Der obige Code gibt die folgende Funktionstabelle aus und entspannt Informationen:

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

Siehe auch

Direktivenreferenz
MASM BNF Grammatik