PROC

Markerar början och slutet av ett procedurblock som kallas etikett. Instruktionerna i blocket kan anropas med CALL-instruktionen eller INVOKE-direktivet .

Syntax

EtikettPROCdistance⟧ ⟦language-type⟧ ⟦ PUBLIC | | EXPORTPRIVATE⟧ ⟦<prologuearg>⟧ ⟦USESreglist⟧ ⟦,parameter:tag⟧ ... ⟧
FRAME ⟦ ⟦:ehandler-address⟧ ⟧
Uttalanden
etikettENDP

Anmärkningar

Argumenten ⟦distance⟧ och ⟦language-type⟧ är endast giltiga i 32-bitars MASM.

FRAME ⟦ ⟦:ehandler-address⟧ ⟧ är endast giltig med ml64.exeoch gör att MASM genererar en funktionstabellpost i .pdata och varvar ned information i .xdata för en funktions strukturerade undantagshantering av avspolningsbeteende.

När attributet FRAME används måste det följas av en . ENDPROLOG-direktivet .

Mer information om hur du använder ml64.exefinns i MASM för x64 (ml64.exe).

Example

; 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

Koden ovan genererar följande funktionstabell och varvar ned information:

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

Se även

Referens för direktiv
MASM BNF-grammatik