. POP2REG

Generiert einen Codeeintrag mit zwei Registern für das angegebene Registerpaar mithilfe des aktuellen Offsets im Epilog.

Syntax

. POP2REGregister1, register2

Parameter

register1
Das erste Register zum Auffüllen. Muss ein allgemeines 64-Bit-Register sein.

register2
Das zweite Register zum Auffüllen. Muss ein allgemeines 64-Bit-Register sein.

register1 und register2 können jeweils 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.

Hinweise

Important

Diese Richtlinie ist experimentell und kann geändert werden. Aktivieren Sie die Abspannversion 3 mit ml64.exe /unwindv3.

  • . POP2REG ist nur in Version 3 zum Entspannen gültig. Es ist das Epilog-Gegenstück zu . PUSH2REG.
  • . POP2REG 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 Relax Version 3, . POP2REG muss vor der Anweisung angezeigt werden, die die Aktion tatsächlich implementiert, um entwundet zu werden.
  • In "Relax Version 3" sind Epilogdirektiven für die Codegenerierung von Epilogen obligatorisch. Ohne Paar .BEGINEPILOG/.ENDEPILOG werden keine Epilog-Entlastungscodes ausgegeben.
  • 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.

Wenn register1 und register2 aufeinander folgenden und zunehmenden Reihenfolge entsprechen, gibt MASM einen Entspanncode aus WOD_PUSH_CONSECUTIVE_2 . Andernfalls gibt MASM einen WOD_PUSH2 Entspanncode 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.

Example

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .push2reg rbx, rsi
   push2 rbx, rsi
   .push2reg r10, r11
   push2 r10, r11
.endprolog
   ; rest of function ...
   .beginepilog
   .pop2reg r10, r11
   pop2 r10, r11
   .pop2reg rbx, rsi
   pop2 rbx, rsi
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Siehe auch

x64 Entspannen Version 3 (experimentell)
Direktivenreferenz
. PUSH2REG
. POPREG
. BEGINEPILOG
MASM BNF Grammatik