. POPREG

Generiert einen WOD_PUSH Entspanncodeeintrag für das angegebene Register mithilfe des aktuellen Offsets im Epilog.

Syntax

. POPREG-Register

Parameter

Registrieren
Das Register, das eingeblendt werden soll. Muss ein allgemeines 64-Bit-Register sein.

Hinweise

Important

Diese Richtlinie ist experimentell und kann geändert werden. Aktivieren Sie Version 3 mit der /unwindv3 Option in ml64.exe.

.POPREG ist nur in Version 3 zum Entspannen gültig. Es ist das Epilog-Gegenstück zu . PUSHREG.

.POPREG ist nur innerhalb einer Epilogregion zwischen . BEGINEPILOG und . ENDEPILOG. Diese Direktiven generieren entwendige Metadaten (.xdata und .pdata Abschnitte), erzeugen jedoch keinen ausführbaren Code. In "Abwickeln" Version 3 muss vor der pop Anweisung, die die Registerwiederherstellung implementiert, .POPREG angezeigt werden. Um eine Vereinbarung zu gewährleisten, schließen Sie sowohl die Entleer-Direktiven als auch den Code ein, den sie in einem Makro entspannen sollen.

Das Register kann eine der folgenden Sein:
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

In "Relax Version 3" sind Epilogdirektiven für die Codegenerierung von Epilogen obligatorisch. Der Assembler gibt keine epilogen Entspanncodes ohne Paar .BEGINEPILOG/.ENDEPILOG aus.

Note

In Der Version 1 wird die Direktive nach der entsprechenden Anweisung angezeigt. In Der Version 3 wird die Direktive vor der Anweisung angezeigt.

Beispiel für die Entspannung 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

Siehe auch

x64 Entspannen Version 3 (experimentell)
Direktivenreferenz
. PUSHREG
. POP2REG
. BEGINEPILOG
MASM BNF Grammatik