Вопрос по использованию MMX, SSE регистров и команд в функциях

Тема в разделе "WASM.BEGINNERS", создана пользователем phprus, 2 янв 2011.

  1. phprus

    phprus New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2006
    Сообщения:
    16
    Оптимизирую некоторые функции для проекта на С с использованием ассемблера. При написании одной функции на ассемблере возникла необходимость в использовании SIMD инструкций. Архитектура - x86.

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

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Нет.

    Нет. Обращение к памяти в алгоритмах как правило через кеш первого уровня, а он сверхбыстр.
     
  3. phprus

    phprus New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2006
    Сообщения:
    16
    Спасибо!

    На всякий случай уточню, а использование MMX/SSE регистров вместо памяти не замедлит код из-за того, что они будут несколько непрофильно использоваться?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Непрофильно это чисто для хранения? Медленнее не будет, но и смысла особого в этом нет.