8

Windows 64 が xmm6 と xmm7 の保存/復元を要求することを選択したのはなぜですか?

Windows 32 では、xmm0...xmm7 を上書きするアセンブリ ルーチンを作成できました。しかし、同じアセンブリ コードを Windows 64 で実行すると、VS2007 は xmm6 と xmm7 に倍精度値を格納するため、通常はアプリケーション エラーが発生します。

X64 には 16 個の xmm レジスタ xmm0...xmm15 (X32 には 8 個の xmm レジスタしかないのに対し) があるため、Microsoft はユーザーが xmm0..xmm7 を上書きできるようにすることを選択できたように思えました (ユーザーが Win32 からアセンブリ ルーチンを再利用できるようにするため)。考えなくても)、ユーザーは xmm8...xmm15 を保存/復元する必要があります。

では、私の好奇心を満足させるために、なぜ Windows 64 は xmm6 と xmm7 の保存/復元を要求することを選択したのでしょうか?

4

1 に答える 1

1

興味深い質問です。私はこれを見つけました:Win64 Structured Exception Handling、XMM6からXMM15までを保存/復元する必要があると述べていますが、理由は述べていません。

ウィキペディアによると、Microsoft の x64 呼び出し規約では XMM0 - XMM3 が使用されています。繰り返しますが、それは理由を述べていません。

于 2008-11-04T16:20:24.130 に答える