Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Označí začátek a konec bloku procedury označovaného jako popisek. Příkazy v bloku lze volat pomocí instrukce CALL nebo INVOKE direktivy.
Syntaxe
Popisek
PROC⟦vzdálenost⟧ ⟦jazykový typ⟧ ⟦PUBLIC| |EXPORTPRIVATE⟧ ⟦<prologuearg>⟧ ⟦USESreglist⟧ ⟦,parametr ⟦:tag⟧ ... ⟧
FRAME⟦ ⟦:ehandler-address⟧ ⟧
výroky
labelENDP
Poznámky
Argumenty ⟦vzdálenost⟧ a ⟦jazyka⟧ jsou platné pouze v 32bitovém MASM.
FRAME ⟦ ⟦:ehandler-address⟧ ⟧ je platný pouze u ml64.exea způsobí, že MASM vygeneruje položku tabulky funkcí v souboru .pdata a uvolní informace v souboru .xdata pro strukturované chování zpracování výjimek funkce.
FRAME Při použití atributu musí následovat . ENDPROLOG – direktiva.
Další informace o používání ml64.exe najdete v MASM pro platformu x64 (ml64.exe).
Příklad
; 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
Výše uvedený kód generuje následující tabulku funkcí a odvíjeje informace:
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