2008-11-04 9 views
8

Dlaczego system Windows 64 zdecydował się na zapisywanie/przywracanie xmm6 i xmm7?Dlaczego system Windows 64 zdecydował się na zapisywanie/przywracanie xmm6 i xmm7?

W systemie Windows 32 można napisać procedury montażowe, w których clobbered xmm0 ... xmm7. Ale jeśli weźmiesz ten sam kod zespołu i uruchomisz go w systemie Windows 64, zazwyczaj spowoduje to błąd aplikacji, ponieważ VS2007 przechowuje wartości podwójnej precyzji w xmm6 i xmm7.

Wydawało mi się, że skoro X64 ma rejestry 16 x mm x mm0 ... xmm15 (mając na uwadze, że X32 ma tylko rejestry 8 x mm), to Microsoft mógł pozwolić użytkownikom na oderwanie xmm0..xmm7 (aby mogli ponownie użyć procedury składania od Win32 bez myślenia o tym), ale wymagają od użytkowników zapisywania/przywracania xmm8 ... xmm15.

Więc, aby zaspokoić własną ciekawość, dlaczego system Windows 64 zdecydował się na zapisywanie/przywracanie xmm6 i xmm7?

Odpowiedz

Powiązane problemy