Share via


.PUSHREG

プロローグ内の現在のオフセットを使用して、指定したレジスタ番号の UWOP_PUSH_NONVOL アンワインド コード エントリを生成します。

構文

.PUSHREG レジスタ

解説

.PUSHREG は、フレーム関数をアンワインドする方法を ml64.exe ユーザーが指定できるようにします。これは、PROCFRAME 宣言から .ENDPROLOG ディレクティブまでのプロローグ内でのみ許可されています。 これらのディレクティブは、コードを生成するのではなく、.xdata.pdata のみを生成します。 .PUSHREG は、アンワインドされるアクションを実際に実装する命令の後に指定する必要があります。 アンワインド ディレクティブと、これを使用してマクロでアンワインドすることが意図されているコードの両方をラップして、一致させるようにすることをお勧めします。

register は次のいずれかになります。
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15

詳細については、「x64 用 MASM (ml64.exe)」を参照してください。

サンプル

説明

次の例は、不揮発性レジスタをプッシュする方法を示しています。

コード

; 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

関連項目

ディレクティブ リファレンス
MASM BNF 文法