Сохранение регистра 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.