.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
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示