프롤로그의 현재 오프셋을 사용하여 지정된 레지스터 쌍에 대한 2 레지스터 푸시 해제 코드 항목을 생성합니다.
문법
.PUSH2REGregister1, register2
매개 변수
register1
푸시할 첫 번째 레지스터입니다. 범용 64비트 레지스터여야 합니다.
register2
푸시할 두 번째 레지스터입니다. 범용 64비트 레지스터여야 합니다.
register1 및 register2는 각각 다음 중 하나일 수 있습니다.
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.
비고
Important
이 지시문은 실험적이며 변경될 수 있습니다. 를 사용하여 버전 3 해제를 사용하도록 ml64.exe /unwindv3설정합니다.
- 프레임 함수의 해제 방법을 지정하는 데 사용합니다
.PUSH2REG. PROCFRAME선언에서 .로 확장되는 프롤로그 내에서만 이 지시문을 사용할 수 있습니다. ENDPROLOG 지시문입니다. - 이러한 지시문은 해제 메타데이터(
.xdata및.pdata섹션)를 생성하지만 실행 코드를 생성하지는 않습니다. 해제 버전 3.PUSH2REG에서는 해제할 작업을 실제로 구현하는 명령 앞에 나타나야 합니다. 규약을 보장하기 위해 해제 지시문과 매크로에서 해제하려는 코드를 모두 래핑하는 것이 좋습니다. -
register1 및 register2가 연속되고 순서가 증가하는 경우 MASM은 해제 코드를 내보낸다
WOD_PUSH_CONSECUTIVE_2. 그렇지 않으면 MASM은WOD_PUSH2해제 코드를 내보낸다.
비고
Unwind 버전 1에서 지시문은 해당 명령 후에 나타납니다. Unwind 버전 3에서는 지시문이 명령 앞에 나타납니다.
unwindv3의 예
; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
.push2reg r10, r11
push2 r10, r11
.push2reg rbx, rsi
push2 rbx, rsi
.endprolog
; rest of function ...
ret
Example1 ENDP
_text ENDS
END
참고하십시오
x64 해제 버전 3(실험적)
지시문 참조
. POP2REG
. PUSHREG
. ENDPROLOG
MASM BNF 문법