PROC

Contrassegna l'inizio e la fine di un blocco di routine denominato etichetta. Le istruzioni nel blocco possono essere chiamate con l'istruzione CALL o la direttiva INVOKE.

Sintassi

label PROC ⟦distance⟧ ⟦language-type⟧ ⟦ PUBLIC | PRIVATE | EXPORT ⟧ ⟦<prologuearg>⟧ ⟦USES reglist⟧ ⟦, parametro:tag⟧ ...
⟦FRAME:ehandler-address⟧ ⟧
Dichiarazioni
etichetta ENDP

Osservazioni:

Gli argomenti ⟦distance⟧ e ⟦language-type⟧ sono validi solo in MASM a 32 bit.

⟦FRAME:ehandler-address⟧ ⟧ è valido solo con ml64.exe e fa sì che MASM generi una voce di tabella delle funzioni in .pdata e informazioni di rimozione in .xdata per il comportamento di rimozione delle eccezioni strutturate di una funzione.

Quando viene usato l'attributo FRAME , deve essere seguito da un oggetto . Direttiva ENDPROLOG .

Per altre informazioni sull'uso di ml64.exe, vedere MASM per x64 (ml64.exe ).

Esempio

; 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

Il codice precedente genera le informazioni seguenti sulla tabella delle funzioni e sulla rimozione:

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

Vedi anche

Riferimento alle direttive
Grammatica BNF MASM