. POPREG

Genererar en WOD_PUSH avspolningskodpost för det angivna registret med den aktuella förskjutningen i epilogen.

Syntax

. POPREG-register

Parameters

Registrera dig
Registret som ska visas. Måste vara ett allmänt 64-bitarsregister.

Anmärkningar

Important

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

.POPREG är endast giltigt i Avspolning version 3. Det är epilogens motsvarighet till . PUSHREG.

.POPREG tillåts endast inom en epilogregion, mellan . BEGINEPILOG och . ENDEPILOG. Dessa direktiv genererar varva ned metadata (.xdata och .pdata avsnitt) men producerar inte körbar kod. I Varva ned version 3 .POPREG måste visas före instruktionen pop som implementerar registeråterställningen. För att säkerställa en överenskommelse omsluter du både avaktiveringsdirektiven och den kod som de är avsedda att varva ned i ett makro.

register kan vara något av följande:
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

I Avspolning av version 3 är epilogdirektiv obligatoriska för kodgenerering av epiloger. Assemblern avger inte epilogavspolningskoder utan ett .BEGINEPILOG/.ENDEPILOG par.

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
   .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

Se även

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