1. C++ / Говнокод #18338

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // Отправная точка новых изысканий
    uint16_t Mask = 0x0000;
    uint8_t i = 0;
    for(i=0; i<255; i++)
    	Mask |= (1 << i);
    
    ResponseBuf = (VirtualMemory & (Mask << RequestedAddr)) >> RequestedAddr;

    Из кода firmware одного девайса.

    Запостил: Sushev, 14 Июня 2015

    Комментарии (14) RSS

    • +1, если цикл понравился.
      Ответить
      • Я джва года ждал такой цикл!
        Ответить
        • Отличная идея. Пойду заведу проект на кикстартере.
          Ответить
          • А цикл-то на самом деле нетривиальный. Гэцэцэ отказывается его оптимизировать даже с параметром -O3. Шланг пытается использовать SSE, но генерирует всё тот же цикл.
            Ответить
            • Интересное наблюдение, сейчас проверил. Кстати, так и не понял до сих пор, для чего автор этот код породил.
              Ответить
          • Ну как, завёл?
            Ответить
        • Давно хочу такой цикл чтобы было можно корованы
          Ответить
    • Зато надёжно! И можно тип маски менять вплоть до 256 бит
      Ответить
      • Нельзя. Тогда цикл старший бит не заполнит (потому что там знак меньше вместо меньше или равно). Так что только до 255 бит.
        Ответить
    • А комментарий в начале кода, по видимому, является троллингом (
      Ответить
    • uint16_t i = 0;
      for(i=0; i<=65535; i++) {
      	Mask |= i;
      	if (!~Mask) break;
      }
      Ответить
    • Оптимизация:
      uint16_t Mask = 0x0001; // инициализируем единичкой
      uint16_t i = 0;
      for(i=0; i<=65535; i++) {
      	Mask |= ((1<<(1<<i))-1)<<(1<<i);
      	if (!~Mask) break;
      }
      Ответить

    Добавить комментарий