. RESTOREREG

WOD_SAVE_NONVOL Menghasilkan entri kode atau WOD_SAVE_NONVOL_FAR unwind untuk register dan offset yang ditentukan, menggunakan offset epilog saat ini.

Syntax

.RESTOREREG reg, offset

Parameter-parameternya

reg
Register nonvolatile untuk dipulihkan.

offset
Offset tumpukan tempat register dipulihkan.

Komentar

Important

Arahan ini bersifat eksperimental dan dapat berubah. Aktifkan Unwind Versi 3 dengan menggunakan ml64.exe /unwindv3.

.RESTOREREG hanya valid dalam Unwind Versi 3. Ini adalah rekan epilog untuk . SAVEREG.

Microsoft Assembler (MASM) memilih pengodean yang paling efisien untuk offset tertentu.

  • .RESTOREREG hanya diizinkan dalam wilayah epilog, antara . BEGINEPILOG dan . ENDEPILOG.
  • Arahan ini menghasilkan metadata unwind (.xdata dan .pdata bagian) tetapi tidak menghasilkan kode yang dapat dieksekusi.
  • Di Unwind Versi 3, .RESTOREREG harus muncul sebelum instruksi yang memuat register dari tumpukan.
  • Untuk memastikan perjanjian, bungkus arahan unwind dan kode yang dimaksudkan untuk melepas lelah dalam makro.
  • Dalam Unwind Versi 3, arahan epilog wajib untuk pembuatan kode unwind epilog. Tidak ada kode epilog unwind yang dipancarkan tanpa sepasang .BEGINEPILOG/.ENDEPILOG .

Nota

Di Unwind Versi 1, arahan muncul setelah instruksi yang sesuai. Di Unwind Versi 3, arahan muncul sebelum instruksi.

Contoh untuk unwindv3

; 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

Baca juga

x64 Unwind Versi 3 (eksperimental)
Referensi Arahan
. SAVEREG
. BEGINEPILOG
Tata Bahasa MASM BNF