Compartilhar via


.SETFRAME

Preenchimentos no quadro de campo e deslocamento registram as informações de desenrolamento usando o registro especificado (reg) e deslocamento (offset).O deslocamento deve ser um múltiplo de 16 e menor ou igual a 240.Essa diretiva também gera uma UWOP_SET_FPREG desenrolar a entrada de código para registrar o especificado usando o atual deslocamento de prólogo.

.SETFRAME reg, offset

Comentários

.SETFRAME permite que os usuários ml64.exe especificar como uma função de quadro esvazia e só é permitida no prólogo, que se estende da PROC declaração de quadro para o .ENDPROLOG diretiva.Essas diretivas não geram código; eles apenas geram .xdata e .pdata..SETFRAME deve ser precedido por instruções que realmente implementam as ações para ser organizado.Ele é uma boa prática para encapsular as diretivas de desenrolamento e do código que eles se destinam à desenrolamento em uma macro para garantir que o contrato.

Para obter mais informações, consulte MASM para x64 (ml64.exe).

Exemplo

2435h06y.collapse_all(pt-br,VS.110).gifDescrição

O exemplo a seguir mostra como usar um ponteiro de quadro:

2435h06y.collapse_all(pt-br,VS.110).gifCódigo

; ml64 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
   push rbp
.pushreg rbp
   sub rsp, 010h
.allocstack 010h
   mov rbp, rsp
.setframe rbp, 0
.endprolog
   ; modify the stack pointer outside of the prologue (similar to alloca)
   sub rsp, 060h

   ; we can unwind from the following AV because of the frame pointer   
   mov rax, 0
   mov rax, [rax] ; AV!

   add rsp, 060h
   add rsp, 010h
   pop rbp
   ret
frmex2 ENDP
_text ENDS
END

Consulte também

Outros recursos

Referência de diretivas