Compartir a través de


.SETFRAME

Completa de cuadro información de desenredo mediante el registro especificado (reg) y el desplazamiento del registro el campo y el desplazamiento en (offset). El desplazamiento debe ser múltiplo de 16 y menor o igual que 240. Esta directiva también genera UWOP_SET_FPREG desenreda la entrada del registro especificado utilizando el desplazamiento actual de prólogo.

.SETFRAME reg, offset

Comentarios

.SETFRAME Permite a los usuarios de ml64.exe especifican cómo una función de cuadro desenredo, y sólo se permite en el prólogo, que extiende de declaración FRAME de PROC a la directiva de .ENDPROLOG . estas directivas no generan código; generan solo .xdata y .pdata. .SETFRAME Deben ir precedidas por las instrucciones que implementan realmente acciones para ser desenrollado. Es aconsejable ajustar las directivas de desenredo y el código que está pensada desenrede en una macro para garantizar el contrato.

Para obtener más información, vea MASM para x64 (ml64.exe).

Ejemplo

Descripción

El ejemplo siguiente se muestra cómo utilizar un puntero de marco:

Có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

Vea también

Otros recursos

Referencia de directivas