For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

Generates a UWOP_PUSH_NONVOL unwind code entry for the specified register number using the current offset in the prologue.

.PUSHREG register  

.PUSHREG allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the PROC FRAME declaration to the .ENDPROLOG directive. These directives do not generate code; they only generate .xdata and .pdata. .PUSHREG should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.

For more information, see MASM for x64 (ml64.exe).


The following sample shows how to push non-volatile tegisters.


; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE  
_text SEGMENT  
Example1 PROC FRAME  
   push r10  
.pushreg r10  
   push r15  
.pushreg r15  
   push rbx  
.pushreg rbx  
   push rsi  
.pushreg rsi  
   ; rest of function ...  
Example1 ENDP  
_text ENDS  

Directives Reference