. SAVEREG

Genererar antingen en UWOP_SAVE_NONVOL eller en UWOP_SAVE_NONVOL_FAR avrullningskodpost för det angivna registret (reg) och förskjutningen (offset) med den aktuella prologförskjutningen. Microsoft Assembler (MASM) väljer den mest effektiva kodningen.

Syntax

.SAVEREG reg,offset

Anmärkningar

Använd .SAVEREG med ml64.exe för att ange hur en ramfunktion avrundas. Du kan bara använda den i prologen, som sträcker sig från deklarationen PROCFRAME till . ENDPROLOG-direktivet .

  • Dessa direktiv genererar varva ned metadata (.xdata och .pdata avsnitt) men producerar inte körbar kod.
  • Föregå .SAVEREG med instruktioner som faktiskt implementerar de åtgärder som ska ångras.
  • 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.

Varva ned version 3-beteende

Important

Stöd för att varva ned version 3 är experimentellt och kan komma att ändras. Aktivera det med hjälp ml64.exe /unwindv3av .

I Varva ned version 3 .SAVEREG genererar antingen en WOD_SAVE_NONVOL eller en WOD_SAVE_NONVOL_FAR avkopplingskodpost. MASM väljer den mest effektiva kodningen baserat på storleken på förskjutningen:

Varva ned kod Tillstånd
WOD_SAVE_NONVOL offset kan kodas som ett skalat 16-bitars värde
WOD_SAVE_NONVOL_FAR offset kräver ett fullständigt 32-bitarsvärde

Note

I Varva ned version 1 visas direktivet efter motsvarande instruktion. I Varva ned version 3 visas direktivet före instruktionen. .SAVEREG måste visas före instruktionen som beskrivs. Detta krav är motsatsen till version 1, där direktivet följer instruktionen.

Exempel på avspolning 3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 020h
   sub rsp, 020h
   .savereg rbx, 0
   mov [rsp], rbx
   .savereg rsi, 8
   mov [rsp+8], rsi
.endprolog
   ; rest of function ...
   mov rsi, [rsp+8]
   mov rbx, [rsp]
   add rsp, 020h
   ret
Example1 ENDP
_text ENDS
END

Motsvarigheten till epilogen är . RESTOREREG.

Se även

x64 Varva ned version 3 (experimentell)
Referens för direktiv
MASM för x64 (ml64.exe)
MASM BNF-grammatik