Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 1.74 KB

dot-pushreg.md

File metadata and controls

61 lines (52 loc) · 1.74 KB
title ms.custom ms.date ms.reviewer ms.suite ms.technology ms.tgt_pltfrm ms.topic f1_keywords dev_langs helpviewer_keywords ms.assetid caps.latest.revision author ms.author manager
.PUSHREG | Microsoft Docs
11/04/2016
cpp-tools
article
.PUSHREG
C++
.PUSHREG directive
e0c83758-dfed-40ea-afe6-cb833c8d2d30
8
corob-msft
corob
ghogen

.PUSHREG

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

Syntax

.PUSHREG register  

Remarks

.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).

Sample

Description

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

Code

; 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  
.endprolog  
   ; rest of function ...  
   ret  
Example1 ENDP  
_text ENDS  
END  

See Also

Directives Reference