1. Assembler / Говнокод #2617

    +260.9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    7855BD60 55               push        ebp  
    7855BD61 8B EC            mov         ebp,esp 
    7855BD63 56               push        esi  
    7855BD64 33 C0            xor         eax,eax 
    7855BD66 50               push        eax  
    7855BD67 50               push        eax  
    7855BD68 50               push        eax  
    7855BD69 50               push        eax  
    7855BD6A 50               push        eax  
    7855BD6B 50               push        eax  
    7855BD6C 50               push        eax  
    7855BD6D 50               push        eax  
    7855BD6E 8B 55 0C         mov         edx,dword ptr [ebp+0Ch] 
    7855BD71 8D 49 00         lea         ecx,[ecx] 
    7855BD74 8A 02            mov         al,byte ptr [edx] 
    7855BD76 0A C0            or          al,al 
    7855BD78 74 09            je          7855BD83 
    7855BD7A 83 C2 01         add         edx,1 
    7855BD7D 0F AB 04 24      bts         dword ptr [esp],eax 
    7855BD81 EB F1            jmp         7855BD74 
    7855BD83 8B 75 08         mov         esi,dword ptr [ebp+8] 
    7855BD86 8B FF            mov         edi,edi 
    7855BD88 8A 06            mov         al,byte ptr [esi] 
    7855BD8A 0A C0            or          al,al 
    7855BD8C 74 0C            je          7855BD9A 
    7855BD8E 83 C6 01         add         esi,1 
    7855BD91 0F A3 04 24      bt          dword ptr [esp],eax 
    7855BD95 73 F1            jae         7855BD88 
    7855BD97 8D 46 FF         lea         eax,[esi-1] 
    7855BD9A 83 C4 20         add         esp,20h 
    7855BD9D 5E               pop         esi  
    7855BD9E C9               leave            
    7855BD9F C3               ret

    чудеса оптимизации

    Запостил: GovnocoderJr, 14 Февраля 2010

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

    • что это за суровый компилер/линкер?
      Ответить
    • Чё не так?
      push eax
      7855BD67 50 push eax
      7855BD68 50 push eax
      7855BD69 50 push eax
      7855BD6A 50 push eax
      7855BD6B 50 push eax
      7855BD6C 50 push eax
      7855BD6D 50 push eax
      Объявление локальных переменных.
      Ответить
      • И где же они юзаются? лишь несколько штук...
        Ответить
    • Кроме того, более короткого кода забивания нулями стека я даже придумать не могу.
      Более того, если судить непредвзято, то в 7855BD74 - 7855BD81 прозреваю цикл, который как раз со стеком работает. Что реально смущает - mov edi,edi , не понимаю в этом сакрального смысла.
      Короче говоря, для таких вещей нужно вводить презумпцию виновности и обязать автора доказывать, что это - говнокод. Минусую.
      P.S. Я только проснулся, посему в голове сумбур, чего-то мог и не заметить.
      Ответить
      • >mov edi,edi
        Это для выравнивания. Более оптимальная замена NOP.
        Ответить
        • Да, пожалуй. Пока шёл на работу, этот случай вспоминал, пришёл к такому же выводу. Но, разве nop nop не дадут те же два байта?
          Ответить
          • Это лишние комманды, а значит забиваеться кэш проца, если не считать новые процы.
            Ответить
            • Наоборот, чтоб кэш заполнить и процессор не простаивал в ожидании чтения.
              Ответить
          • > nop nop не дадут те же два байта
            Дадут, но будут сильнее напрягать декодер команд, т.к. вдвое больше команд получится.
            Ответить
    • Чушь и бред. Вот я настоящий язык.
      Ответить
    • Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

      Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

      Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

      достаточно просто зарегистрироваться на нашем сервисе. > www.like.zarplatt.ru <
      Ответить
      • Хурозвоз бойсовый питух средний азий

        ищу бойсових петух Филиппин куплю если бы в Фергана тел ±996551603663
        https://ok.ru/group/51823935029317
        Ответить
    • Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

      Крупнейшая международная компания по продаже А/В билетов
      срочно набирает сотрудников на постоянную основу для несложной
      работы через интернет, с ежедневными выплатами от 11 000 руб.

      Работая в нашей компании Вы получаете:

      - Соблюдение трудового кодекса
      - Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
      - Высокий доход
      - Каждый наш сотрудник на дому гарантированно получает от 11 000 руб. в день.
      - Гарантированные стабильные выплаты заработанных денег.
      - Выплаты происходят ежедневно на банковские карты или электронные кошельки.

      Пройдите регистрацию у нас на сайте. ( airline.zarplatt.ru )

      Без вложений, опыт и профессиональные навыки не требуются!
      Ответить
      • Вложил опыт и профессиональные навыки в твою компанию, проверь.
        Ответить
      • для несложной
        работы через интернет?
        Эна пхп писать?
        Ответить

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