.RESTOREXMM128

現在のエピローグ オフセットを使用して、指定した XMM レジスタとオフセットの WOD_SAVE_XMM128 または WOD_SAVE_XMM128_FAR アンワインド バージョン 3 アンワインド コード エントリを生成します。

構文

.RESTOREXMM128 xmmregoffset

パラメーター

xmmreg
復元する XMM レジスタ。

オフセット
レジスタの復元元のスタック オフセット。 16 の倍数である必要があります。

注釈

Important

このディレクティブは試験段階であり、変更される可能性があります。 ml64.exe /unwindv3でアンワインド バージョン 3 を有効にします。

.RESTOREXMM128 はアンワインド バージョン 3 でのみ有効です。 これはエピローグに対応する .SAVEXMM128

Microsoft アセンブラー (MASM) は、特定のオフセットに対して最も効率的なエンコードを選択します。

  • .RESTOREXMM128 はエピローグ領域内でのみ許可されます 。BEGINEPILOG および .ENDEPILOG
  • これらのディレクティブはアンワインド メタデータ (.xdata セクションと .pdata セクション) を生成しますが、実行可能コードは生成しません。
  • アンワインド バージョン 3 では、 .RESTOREXMM128 は、スタックから XMM レジスタを読み込む命令の に表示する必要があります。
  • アグリーメントを確保するには、アンワインド ディレクティブと、マクロでアンワインドするコードの両方をラップします。
  • アンワインド バージョン 3 では、エピローグ アンワインド コードの生成にはエピローグ ディレクティブが必須です。 エピローグ アンワインド コードは、 .BEGINEPILOG/.ENDEPILOG ペアなしで出力されません。

Note

アンワインド バージョン 1 では、対応する命令の後にディレクティブが表示されます。 アンワインド バージョン 3 では、命令の にディレクティブが表示されます。

unwindv3 の例

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 030h
   sub rsp, 030h
   .savexmm128 xmm6, 0
   movdqa [rsp], xmm6
   .savexmm128 xmm7, 010h
   movdqa [rsp+010h], xmm7
.endprolog
   ; rest of function ...
   .beginepilog
   .restorexmm128 xmm7, 010h
   movdqa xmm7, [rsp+010h]
   .restorexmm128 xmm6, 0
   movdqa xmm6, [rsp]
   .freestack 030h
   add rsp, 030h
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

こちらも参照ください

x64 アンワインド バージョン 3 (試験段階)
ディレクティブ リファレンス
.SAVEXMM128
.BEGINEPILOG
MASM BNF 文法