Копирование невыравненых данных.

Тема в разделе "WASM.BEGINNERS", создана пользователем Sercher, 12 авг 2011.

  1. Sercher

    Sercher New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    59
    Раньше имея дело только с выравненными данными использовал movaps для загрузки данных регистры xmm0-xmm15 и movntdq для выгрузки в память , чем достигал большой скорости копирования. Теперь необходимо обеспечить быстрое копирование не выравненных данных произвольного размера для чего я заменил movaps/movntdq на movupd что снизило скорость почти на 25%.
    Как ускорить копирование не выравненных данных? Есть способы проверки выравнивания данных по 16 байт без деления начала адреса данных и проверки остатка?
     
  2. srm

    srm New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2011
    Сообщения:
    189
    Sercher, чем не устраивает and arg, 0Fh и test arg, 0FFFFFFF0h?
     
  3. Sercher

    Sercher New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    59
    Устраивает.
    Единственный способ быстрого копирования который в голову приходит:
    Копировать сначала данные из источника по байтого пока указанное тобой условие не будет выполняться , если условие выполняться начинаем копировать как выравненные данные, но с выравниванием адреса куда копируем при этом, пока нечего придумать не могу. Выравнивать таким макаром одновременно адреса источника и приемника не выходит.