에필로그의 WOD_PUSH 현재 오프셋을 사용하여 지정된 레지스터에 대한 해제 코드 항목을 생성합니다.
문법
. POPREG 레지스터
매개 변수
register
팝업할 레지스터입니다. 범용 64비트 레지스터여야 합니다.
비고
Important
이 지시문은 실험적이며 변경될 수 있습니다. ml64.exe옵션을 사용하여 버전 3 해제를 사용하도록 /unwindv3 설정합니다.
.POPREG 는 해제 버전 3에서만 유효합니다. 에필로그에 대응합니다 . PUSHREG.
.POPREG 는 에필로그 지역 내에서만 허용됩니다 . BEGINEPILOG 및 . ENDEPILOG. 이러한 지시문은 해제 메타데이터(.xdata 및 .pdata 섹션)를 생성하지만 실행 코드를 생성하지는 않습니다. 해제 버전 3 .POPREG 에서는 레지스터 복원을 pop 구현하는 명령 앞에 나타나야 합니다. 규약을 보장하려면 해제 지시문과 매크로에서 해제하려는 코드를 모두 래핑합니다.
레지스터 는 다음 중 하나일 수 있습니다.
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31
해제 버전 3에서 에필로그 지시문은 에필로그 해제 코드 생성에 필수입니다. 어셈블러는 쌍 없이 .BEGINEPILOG/.ENDEPILOG 에필로그 해제 코드를 내보내지 않습니다.
참고 항목
Unwind 버전 1에서 지시문은 해당 명령 후에 나타납니다. Unwind 버전 3에서는 지시문이 명령 앞에 나타납니다.
unwindv3의 예
; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
.pushreg rbx
push rbx
.pushreg rsi
push rsi
.endprolog
; rest of function ...
.beginepilog
.popreg rsi
pop rsi
.popreg rbx
pop rbx
.endepilog
ret
Example1 ENDP
_text ENDS
END
참고하십시오
x64 해제 버전 3(실험적)
지시문 참조
. PUSHREG
. POP2REG
. BEGINEPILOG
MASM BNF 문법