다음을 통해 공유


.SETFRAME

지정된 레지스터(reg) 및 오프셋(오프셋)을 사용하여 프레임 레지스터 필드와 해제 정보의 오프셋을 채웁니다. 오프셋은 16의 배수여야 하며 240보다 작거나 같아야 합니다. 또한 이 지시문은 UWOP_SET_FPREG 현재 프롤로그 오프셋을 사용하여 지정된 레지스터에 대한 해제 코드 항목을 생성합니다.

구문

. SETFRAME reg, offset

설명

. SETFRAME을 사용하면 ml64.exe 사용자가 프레임 함수를 해제하는 방법을 지정할 수 있으며 PROC FRAME 선언에서 확장되는 프롤로그 내에서만 허용됩니다. ENDPROLOG 지시문입니다. 이러한 지시문은 코드를 생성하지 않습니다. 만 생성 .xdata 하고 .pdata. . SETFRAME 앞에는 해제할 작업을 실제로 구현하는 지침이 있어야 합니다. 규약을 보장하기 위해 해제 지시문과 매크로에서 해제하려는 코드를 모두 래핑하는 것이 좋습니다.

자세한 내용은 x64용 MASM(ml64.exe)을 참조하세요.

Sample

설명

다음 샘플에서는 프레임 포인터를 사용하는 방법을 보여 줍니다.

코드

; 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

참고 항목

지시문 참조
MASM BNF 문법