Оптимизирую некоторые функции для проекта на С с использованием ассемблера. При написании одной функции на ассемблере возникла необходимость в использовании SIMD инструкций. Архитектура - x86. Подскажите пожалуйста, надо-ли сохранять на стеке старые значения MMX/SSE-регистров и потом восстанавливать их перед ret? А так-же посоветуйте, имеет ли смысл использовать MMX/SSE регистры для хранения 32-х битных целых для того, что-бы лишний раз не обращаться к памяти для хранения промежуточных данных в расчете (стандартных регистров в одном цикле не хватает, а лишних обращений к памяти хотелось-бы избежать)?
Спасибо! На всякий случай уточню, а использование MMX/SSE регистров вместо памяти не замедлит код из-за того, что они будут несколько непрофильно использоваться?