.SETFRAME
칠 프레임에 지정한 레지스터를 사용 하 여 해제 정보의 레지스터 필드와 오프셋 (reg) 및 오프셋 (offset).오프셋은 16의 배수여야 하고 240보다 작거나 같아야 합니다.이 지시문에도 생성 한 UWOP_SET_FPREG 은 현재 프롤로그 오프셋을 사용 하 여 지정 된 레지스터에 대 한 코드 항목을 해제 합니다.
.SETFRAME reg, offset
설명
.SETFRAME ml64.exe 사용자 프레임 함수 해제를 하 고 프롤로그에서 확장에 사용할 수 있습니다 방법을 지정할 수 있습니다에서 프로시저 프레임 선언에는 .프롤로그 끝 지시문입니다.이러한 지시문 코드를 생성 하지 않습니다. 생성만 .xdata 및 .pdata..해제 되지 않도록 하는 작업을 실제로 구현 지침에 SETFRAME가 있어야 합니다.해제 지시문과 계약을 확인 하려면 매크로 해제 합니다 의미입니다 코드를 래핑하는 것이 좋습니다.
자세한 내용은 MASM x64 (ml64.exe)를 참조하십시오.
샘플
설명
다음 샘플 프레임 포인터를 사용 하는 방법을 보여 줍니다.
코드
; 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