. RESTOREREG

Genererar antingen en WOD_SAVE_NONVOL eller en WOD_SAVE_NONVOL_FAR avrullningskodpost för det angivna registret och förskjutningen med den aktuella epilogförskjutningen.

Syntax

.RESTOREREG reg, offset

Parameters

reg
Det icke-volatilregister som ska återställas.

förskjutning
Stackförskjutningen som registret återställs från.

Anmärkningar

Important

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

.RESTOREREG är endast giltigt i Avspolning version 3. Det är epilogens motsvarighet till . SAVEREG.

Microsoft Assembler (MASM) väljer den mest effektiva kodningen för en given förskjutning.

  • .RESTOREREG 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 .RESTOREREG måste visas före instruktionen som läser in registret från stacken.
  • 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.
  • I Avspolning av version 3 är epilogdirektiv obligatoriska för kodgenerering av epiloger. Inga epilog-avrullningskoder genereras 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
   .allocstack 020h
   sub rsp, 020h
   .savereg rbx, 0
   mov [rsp], rbx
   .savereg rsi, 8
   mov [rsp+8], rsi
.endprolog
   ; rest of function ...
   .beginepilog
   .restorereg rsi, 8
   mov rsi, [rsp+8]
   .restorereg rbx, 0
   mov rbx, [rsp]
   .freestack 020h
   add rsp, 020h
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Se även

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