Цитата(scifi @ Feb 25 2011, 11:00)

Ещё можно пооптимизировать программное копирование, используя инструкции LDM/STM.
Заменил пересылки на 32-битовые
Код
// Программная пересылка буфера в контроллер ЖКИ 32-битовыми словами
uint32_t *pSour = (uint32_t *)(DPYBUF + Offset);
uint32_t *pDist = (uint32_t *)(LCDRAM + Offset);
LED_On();
for (uint32_t i=Size/4; i--; ) {
*pDist++ = *pSour++;
}
LED_Off();
Время пересылки уменьшилось с 18ms до 14ms.
(До этого я еще уменьшил время доступа к контроллеру ЖКИ, поэтому время и для 16-битовых пересылок уменьшилось).
Компилятор в этом случае использует LDM/STM, но только один регистр использует.
Вот кабы он знал, что количество пересылок кратно 8, 16... байтам...
Код
;;;415 *pDist++ = *pSour++;
0003d2 ca20 LDM r2!,{r5}
0003d4 c020 STM r0!,{r5}
Пробовал заменить указатели на uint64_t *, но быстрее не стало, а размер кода увеличился.