. PUSHREG

Genereert een UWOP_PUSH_NONVOL afwikkelcodevermelding voor het opgegeven registernummer met behulp van de huidige offset in de proloog.

Syntax

. PUSHREG-register

registratie kan een van de volgende zijn:
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15

Wikkel versie 3 de registratieondersteuning uit om R16–R31 op te nemen. registratie kan een van de volgende zijn:
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

Opmerkingen

Gebruik .PUSHREG deze functie ml64.exe om op te geven hoe een framefunctie tot rust komt. U kunt alleen in de proloog gebruiken .PUSHREG , die zich uitbreidt van de PROC-verklaringFRAME tot de . ENDPROLOG-richtlijn . Deze instructies genereren een ontspannen metagegevens (.xdata en .pdata secties), maar produceren geen uitvoerbare code. Ga vooraf aan .PUSHREG de instructies waarmee de acties daadwerkelijk worden geïmplementeerd. Om de overeenkomst te garanderen, verpakt u zowel de richtlijnen voor afwikkelen als de code die ze zijn bedoeld om in een macro tot rust te komen.

Code

In het volgende voorbeeld ziet u hoe u niet-compatibele registers pusht.

; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   push r10
.pushreg r10
   push r15
.pushreg r15
   push rbx
.pushreg rbx
   push rsi
.pushreg rsi
.endprolog
   ; rest of function ...
   ret
Example1 ENDP
_text ENDS
END

Gedrag van versie 3 tot rust laten komen

Important

Ondersteuning voor versie 3 is experimenteel en kan worden gewijzigd. Schakel het in met behulp van ml64.exe /unwindv3.

Note

In Relax versie 1 wordt de instructie weergegeven na de bijbehorende instructie. In Relax versie 3 wordt de instructie weergegeven vóór de instructie. In Afwikkelen versie 3 genereert .PUSHREG u een WOD_PUSH afwikkelcodevermelding en moet worden weergegeven voordat de push reg instructies worden beschreven. Deze vereiste is het tegenovergestelde van versie 1, waarbij de richtlijn de instructie volgt.

Voorbeeld voor relaxv3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushreg r10
   push r10
   .pushreg r15
   push r15
   .pushreg rbx
   push rbx
   .pushreg rsi
   push rsi
.endprolog
   ; rest of function ...
   ret
Example1 ENDP
_text ENDS
END

De epiloog tegenhanger is . POPREG.

Zie ook

x64 Versie 3 tot rust laten komen (experimenteel)
Naslaginformatie over richtlijnen
MASM BNF-grammatica
MASM voor x64 (ml64.exe)