Сохранение регистра XMM перед вызовом функции

Требуется ли сохранять / помещать любые регистры XMM в стек перед вызовом функции сборки? Потому что наблюдаю проблему сбоя в моем коде с режимом выпуска для 64-битной разработки (с использованием AVX2). В режиме отладки работает нормально. Я попытался сохранить содержимое регистра XMM8 и восстановить его в конце вызова функции, после чего он работал нормально.

Любая идея или ссылки?

1 ответ

Да, в Microsoft Windows вам необходимо сохранить регистры XMM6-XMM15. См. Http://msdn.microsoft.com/en-us/library/7kcdt6fy.aspx - сюда входит xmm8, поэтому либо сохраните их, либо не используйте их в своей функции.

Однако в Linux это временные регистры, и поэтому их не нужно сохранять. См. http://www.x86-64.org/documentation/abi.pdf стр. 21.

Другие вопросы по тегам