Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Marca o início e o fim de um bloco de procedimento chamado etiqueta. As instruções no bloco podem ser chamadas com a instrução CALL ou a diretiva INVOKE .
Syntax
Editora
PROC⟦distância⟧ ⟦tipo-linguagem⟧ ⟦PUBLICPRIVATE| |EXPORT⟧ ⟧ ⟦prologuearg><⟧ ⟦reglistaUSES⟧ ⟦,parâmetro ⟦:tag⟧ ... ⟧
⟦FRAME⟦:endereço-handler⟧ ⟧
Declarações
editoraENDP
Remarks
Os argumentos ⟦distância⟧ e ⟦tipo de linguagem⟧ são válidos apenas em MASM de 32 bits.
⟦FRAME ⟦:ehandler-endereço⟧ ⟧ só é válido com ml64.exe, e faz com que o MASM gere uma entrada na tabela de funções em .pdata e desenrolle informação em .xdata para o comportamento de desmantelamento estruturado de exceções de uma função.
Quando o FRAME atributo é usado, deve ser seguido por um . Diretiva ENDPROLOG .
Consulte MASM para x64 (ml64.exe) para mais informações sobre o uso de 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
O código acima emite a seguinte tabela de funções e informação de desmantelamento:
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