Цитата(mantech @ Nov 21 2013, 22:13)

Дык наверно так делают, чтобы получить любое кол-во копируемых байт, а не кратно 4м. Например, как такой операцией скопировать 5 или 6 байт? 32х бытовое копирование запросит как минимум 8, а если память выделена только под 5?
Если уж так важна скорость, и объемы копирования не 10 байт, а значительно больше - используйте DMA в 32х битном режиме...
Да Вы чего?

Гляньте исходники newlib, bionic...
Оптимизированная версия memcpy проверяет выравнивание src и dst и выбирает вариант - копирование LDM/STM блоками по 4 слова, копирование в loop-е по словам, по полусловам, по байтам.
У Cortex-A помимо этого еще есть плюшки с Neon-ом...
Полагаю, что ТС прекрасно знает это и без нас.
И вопрос его, надо полагать, заключается в том, что "WTF? Зачем тупо выбирать самый пессимистичный вариант?" (с учетом того, что эта версия memcpy откуда-то там из линуксового ядра, стало быть писал ее не дурак)...
Хотя, надо отметить, что в том же newlib-е подобный вариант тоже присутствует:
Код
#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
while (len0--) {
*dst++ = *src++;
}
Сообщение отредактировал winipuh - Nov 21 2013, 19:27