. PUSH2REG

프롤로그의 현재 오프셋을 사용하여 지정된 레지스터 쌍에 대한 2 레지스터 푸시 해제 코드 항목을 생성합니다.

문법

.PUSH2REG register1, register2

매개 변수

register1
푸시할 첫 번째 레지스터입니다. 범용 64비트 레지스터여야 합니다.

register2
푸시할 두 번째 레지스터입니다. 범용 64비트 레지스터여야 합니다.

register1register2는 각각 다음 중 하나일 수 있습니다.
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 에서는 해제할 작업을 실제로 구현하는 명령 앞에 나타나야 합니다. 규약을 보장하기 위해 해제 지시문과 매크로에서 해제하려는 코드를 모두 래핑하는 것이 좋습니다.
  • register1register2가 연속되고 순서가 증가하는 경우 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 문법