Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
.SAVEREGreg,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 (
.xdatae.pdatasezioni) ma non producono codice eseguibile. - Precedere
.SAVEREGle 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