.SAVEREG

Genera una UWOP_SAVE_NONVOL voce di codice di rimozione o UWOP_SAVE_NONVOL_FAR per il registro specificato (reg) e l'offset (offset) utilizzando l'offset del prologo corrente. Microsoft Assembler (MASM) sceglie la codifica più efficiente.

Sintassi

.SAVEREG reg,offset

Osservazioni:

Usare .SAVEREG con ml64.exe per specificare la modalità di rimozione di una funzione frame. È possibile usarlo solo all'interno del prologo, che si estende dalla PROCFRAME dichiarazione all'oggetto . Direttiva ENDPROLOG .

  • Queste direttive generano metadati di rimozione (.xdata e .pdata sezioni) ma non producono codice eseguibile.
  • Precedere .SAVEREG le istruzioni che implementano effettivamente le azioni da rimuovere.
  • Per garantire il contratto, eseguire il wrapping di entrambe le direttive di rimozione e il codice da rimuovere in una macro.

Comportamento di rimozione versione 3

Importante

Il supporto della versione 3 della rimozione è sperimentale ed è soggetto a modifiche. Abilitarlo usando ml64.exe /unwindv3.

In Rimozione versione 3 .SAVEREG genera una WOD_SAVE_NONVOL voce di codice di rimozione o WOD_SAVE_NONVOL_FAR . MASM seleziona la codifica più efficiente in base alle dimensioni dell'offset:

Codice di rimozione Condition
WOD_SAVE_NONVOL offset può essere codificato come valore a 16 bit ridimensionato
WOD_SAVE_NONVOL_FAR offset richiede un valore a 32 bit completo

Note

In Rimozione versione 1 la direttiva viene visualizzata dopo l'istruzione corrispondente. In Rimozione versione 3 la direttiva viene visualizzata prima dell'istruzione. .SAVEREG deve essere visualizzato prima dell'istruzione descritta. Questo requisito è l'opposto della versione 1, in cui la direttiva segue l'istruzione .

Esempio di rimozionev3

; 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

La controparte dell'epilogo è . RESTOREREG.

Vedi anche

Versione di rimozione x64 3 (sperimentale)
Riferimento alle direttive
MASM per x64 (ml64.exe)
Grammatica BNF MASM