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

Discussion in 'WASM.BEGINNERS' started by Sercher, Aug 12, 2011.

  1. Sercher

    Sercher New Member

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

    srm New Member

    Blog Posts:
    0
    Joined:
    Jun 14, 2011
    Messages:
    189
    Sercher, чем не устраивает and arg, 0Fh и test arg, 0FFFFFFF0h?
     
  3. Sercher

    Sercher New Member

    Blog Posts:
    0
    Joined:
    Feb 11, 2008
    Messages:
    59
    Устраивает.
    Единственный способ быстрого копирования который в голову приходит:
    Копировать сначала данные из источника по байтого пока указанное тобой условие не будет выполняться , если условие выполняться начинаем копировать как выравненные данные, но с выравниванием адреса куда копируем при этом, пока нечего придумать не могу. Выравнивать таким макаром одновременно адреса источника и приемника не выходит.