. PUSH2REG

Genererar en kodpost med två registreringar för att varva ned kod för det angivna registerparet med den aktuella förskjutningen i prologen.

Syntax

.PUSH2REG register1, register2

Parameters

register1
Det första registret som ska skickas. Måste vara ett allmänt 64-bitarsregister.

register2
Det andra registret som ska skickas. Måste vara ett allmänt 64-bitarsregister.

register1 och register2 kan var och en av följande vara:
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.

Anmärkningar

Important

Detta direktiv är experimentellt och kan komma att ändras. Aktivera Varva ned version 3 med hjälp ml64.exe /unwindv3av .

  • Använd .PUSH2REG för att ange hur en ramfunktion avspolas. Du kan bara använda det här direktivet i prologen, som sträcker sig från PROC-deklarationenFRAME till . ENDPROLOG-direktivet .
  • Dessa direktiv genererar varva ned metadata (.xdata och .pdata avsnitt) men producerar inte körbar kod. I Varva ned version 3 .PUSH2REG måste visas före instruktionen som faktiskt implementerar åtgärden för att ångras. För att säkerställa en överenskommelse är det en bra idé att omsluta både avaktiveringsdirektiven och koden som de är avsedda att varva ned i ett makro.
  • Om register1 och register2 är i följd och i ökande ordning genererar MASM en WOD_PUSH_CONSECUTIVE_2 avspolningskod. Annars genererar MASM en WOD_PUSH2 avspolningskod.

Note

I Varva ned version 1 visas direktivet efter motsvarande instruktion. I Varva ned version 3 visas direktivet före instruktionen.

Exempel på avspolning 3

; 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

Se även

x64 Varva ned version 3 (experimentell)
Referens för direktiv
. POP2REG
. PUSHREG
. ENDPROLOG
MASM BNF-grammatik