PROC
Marque le début et la fin d’un bloc de procédure appelé étiquette. Les instructions du bloc peuvent être appelées avec l’instruction CALL ou la directive INVOKE.
Syntaxe
label PROC ⟦distance⟧ ⟦language-type⟧ ⟦ PUBLIC PRIVATE | | EXPORT ⟧ ⟦<prologuearg>⟧ ⟦USE reglist⟧ ⟦, parameter ⟦ :tag⟧ ... ⟧
⟦FRAME ⟦ :ehandler-address⟧ ⟧
Déclarations
label ENDP
Notes
Les arguments ⟦distance⟧ et ⟦language-type⟧ sont valides uniquement dans maSM 32 bits.
⟦FRAME ⟦ :ehandler-address⟧ ⟧ est valide uniquement avec ml64.exe et provoque la génération d’une entrée de table de fonctions dans .pdata et les informations de déroulement dans .xdata pour le comportement structuré de gestion des exceptions d’une fonction.
Lorsque l’attribut FRAME est utilisé, il doit être suivi d’un . Directive ENDPROLOG .
Pour plus d’informations sur l’utilisation de ml64.exe, consultez MASM pour x64 (ml64.exe).
Exemple
; 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
Le code ci-dessus émet la table de fonctions suivante et les informations de déroulement :
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
Voir aussi
Informations de référence sur les directives
Grammaire MASM BNF