- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 
                        // UNALIGNED only for IA64 (Itanium) 
// for AMD64 & i386 this not needed
void * c_memmove(void *dest, void const *src, size_t n)
{
  void *ret = dest;
  if (n)
  {
    (__int8 *&)dest += n;
    (__int8 *&)src += n;
    switch (int x = n % 4)
    {
      do
      {
        if (!!'true')
        {
          case 0:
            *--(UNALIGNED __int32 *&)dest = *--(UNALIGNED __int32 *&)src;
            n -= 4;
        }
        else
        {
          case 3: 
            *--(__int8 *&)dest = *--(__int8 *&)src;
          case 2: 
            *--(__int8 *&)dest = *--(__int8 *&)src;
          case 1: 
            *--(__int8 *&)dest = *--(__int8 *&)src;
          n -= x;
        }
      } while (n);
    }
  }
  return ret;
}
                                 
        
Но вообще в таких слуаях код для каджой архитектуры пишется свой.
http://govnokod.ru/8495#comment119288
А тут чисто копирование в обратном порядке. Этакий недоделанный memmove.
Понятно, что каждый С/С++ программист обязан хотя бы раз в своей жизни применить Duff's device. Ничего зазорного в этом нет. Но что делает Duff's device здесь?
Цель Duff's device, как известно, заключается в элегантной реализации обработки "остатка" при выполнении развертки цикла. Основная идея Duff Device - использование одного и того же кода как для обработки основной итерации так и для обработки "остатка" (засчет входа в середину развернутого кода).
В данном же случае никакой развертки цикла не делается: во время выполнения основной итерации цикла работает отдельная ветка 'case 0:', т.е. за каждую итерацию цикла выполняется одно и только одно присваивание (пусть и "большое", т.е. 32-битное).
Да, засчет Duff's Device тут выполняется вход в середину кода обработки "остатка", т.е. какие-то следы идеи Duff's Device прослеживаются, но это не более чем дискредитация идеи. Оно тут служит лишь запутыванию кода и все.
Я думаю, что к такому виду этот код пришел в результате эволюционных изменений. Скорее всего, изначально тут был реализован (или хотя бы задуман) классический полноценный Duff's Device с разверткой цикла и побайтовым копированием. Потом кто-то решил его соптимизировать, заменив основную итерацию на 32-битное копирование. Это здравая оптимизация. Но вот то, что Duff's Device в этом оптимизированном варианте стал ни на фиг не нужен аффтар не заметил.
Отдельно стоит заметить, что оптимизация хоть и здравая (по идее), но реализована неправильно. На любой платформе, что с жесткими требованиями выравнивания, что с мягкими, оптимизация через многобайтное копирование дает хороший эффект только при копировании выровненных данных. Вот к этому и надо было стремиться.
Удивляет также использование 'if(!!'true')'. Это еще что такое? Milti-characher char literal?? Зачем??? Почему бы просто не написать 'if(true)'?
An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.
То есть 'true' - это int и значение зависит от компилятора.
!! преобразует int в bool
Возможно, пытались надурить глупый компилятор, или просто говно :-)
<a href=http://mirurokov.net/page/83/>мастер класс селезнев куриные котлеты</a>