.SETFRAME
지정된 레지스터(reg) 및 오프셋(오프셋)을 사용하여 프레임 레지스터 필드와 해제 정보의 오프셋을 채웁니다. 오프셋은 16의 배수여야 하며 240보다 작거나 같아야 합니다. 또한 이 지시문은 UWOP_SET_FPREG
현재 프롤로그 오프셋을 사용하여 지정된 레지스터에 대한 해제 코드 항목을 생성합니다.
구문
. SETFRAMEreg, offset
설명
. SETFRAME을 사용하면 ml64.exe 사용자가 프레임 함수의 해제 방법을 지정할 수 있으며 PROC FRAME 선언에서 확장되는 프롤로그 내에서만 허용됩니다. ENDPROLOG 지시문입니다. 이러한 지시문은 코드를 생성하지 않습니다. 만 생성 .xdata
하고 .pdata
. . SETFRAME 앞에는 해제할 작업을 실제로 구현하는 지침이 있어야 합니다. 규약을 보장하기 위해 해제 지시문과 매크로에서 해제하려는 코드를 모두 래핑하는 것이 좋습니다.
자세한 내용은 x64용 MASM(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
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기