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

    +158

    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
    CODE:00403FB0 proc unk2_Reset
    CODE:00403FB0         mov     [ds:sizeMemUnk_2_1], 0
    CODE:00403FBA         mov     [ds:sizeMemUnk_2_2], 0
    CODE:00403FC4         xor     eax, eax
    CODE:00403FC6         mov     [ds:ddUnk2_42AB0C], eax
    CODE:00403FCB         mov     [ds:ddUnk2_42AB10], eax
    CODE:00403FD0         mov     [ds:ddUnk2_42AB14], eax
    CODE:00403FD5         mov     [ds:dbUnk2_42AB5E], al
    CODE:00403FDA         xor     eax, eax
    CODE:00403FDC         mov     [ds:ddUnk2_42AB18], eax
    CODE:00403FE1         mov     [ds:ddUnk2_42AB1C], eax
    CODE:00403FE6         xor     eax, eax
    CODE:00403FE8         mov     [ds:ddUnk2_42AB20], eax
    CODE:00403FED         mov     [ds:ddUnk2_42AB24], eax
    CODE:00403FF2         mov     eax, [ds:ddInit_6]      ; eax = 6
    CODE:00403FF7         sub     eax, 2
    CODE:00403FFA         mov     [ds:ddUnk2_42AB2C], eax
    CODE:00403FFF         mov     eax, 12000h
    CODE:00404004         mov     [ds:ddUnk2_42AB28], eax
    CODE:00404009         cmp     eax, 2008h
    CODE:0040400E         jb      short loc_404015
    CODE:00404010         mov     eax, 2008h
    CODE:00404015 loc_404015:
    CODE:00404015         sub     eax, 8
    CODE:00404018         mov     [ds:ddUnk2_42AB30], eax
    CODE:0040401D         jmp     loc_41C374
    CODE:0040401D endp

    Нашел настоящую жесть. Особенно манипуляции с константами позабавили. Не ожидал такого от проф. программистов.

    Запостил: DemonId7, 20 Июня 2011

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

    • >Не ожидал такого от проф. программистов.
      ассемблерщики - лоу левел пэхэпэшники
      Ответить
    • показать все, что скрытоЧто не так?
      Ответить
      • Наступает продолжительное молчание, в котором отчетливо слышится тихое напряженное гудение синапсов.(c)
        Ответить
        • большое кол-во присвоений подозрительно, но говнокод компилера вполне мог бы быть в этом виноват.
          Ответить
        • Можете объяснить, что здесь не так? Я не понимаю. :-[
          Ответить
          • Ну раз с ассемблером напряг, то может быть так дойдёт:
            ddUnk2_42AB28 = eax = 0x12000;
            if (eax >= 0x2008) {
                eax = 0x2008;
            };
            eax -= 8;
            ddUnk2_42AB30 = eax;

            Вопрос: сколько выкурил программист, чтобы создать подобную бредятину?
            Ответить
            • А нет ли тут генеренного кода?
              Ответить
              • Уже предлагал такой вариант, но в этом треде всех минусуют. ^_^
                Ответить
            • Ничего криминального не вижу. Оптимизатор "поработал".
              v1=0x12000;
              v2=min(0x2008, v1)-8;
              Ответить
              • Этот код писался на ассемблере, так что ни о каком "оптимизаторе" не может быть и речи. Это именно работа "ручками".
                И в любом случае даже самый дохленький сишный компилятор "раскусит" манипуляции с константами и выкинет лишнее, уж это-то они все делают отлично.
                Ответить
                • >"раскусит" манипуляции с константами
                  Да, вижу. Ночью на говнокод заходить мне нельзя... :(

                  Должно было быть:
                  v1=0x12000;
                  v2=0x2000;
                  Ответить
                • А по-моему это выхлоп компилятора. Не раз такое видел. Скорее всего, тут какие-то смещения для какой-нибудь гадости типа switch-case или для массивов.
                  Ответить
                • что тут непонятного
                  mov eax, AAA
                  mov [ds:ddUnk2_42AB28], eax
                  cmp eax, BBB
                  jb skip
                  mov eax, BBB

                  поди разбери что там за константы прописали
                  Ответить
                • >> Этот код писался на ассемблере

                  Какался он тоже на ассемблере. Что ещё расскажете?

                  ddUnk2_42AB0C, ddUnk2_42AB10, loc_404015 –— вот это всё руками, да?
                  Ответить
                  • Какой анскилл )))
                    Ответить
                  • Это выхлоп дизасма, а писаться эта хуйня могла на чём угодно, включая осесблер.
                    Ответить
                    • И то верно. Однако, если она писа́лась на ассемблере, то её сочинял больной ублюдок, который думает так же, как кококомпилятор с языка высокого уровня.
                      Ответить
                      • Ну может это макроассемблер. Пользователь пишет что-то типа
                        ZERO_2_BYTES(Steve)
                        ZERO_5_BYTES(Brown)
                        ZERO_4_BYTES(Urmom)
                        и не задумывается, что там получается лишние команды. Может, это не перформансно-критический кусок.
                        Ответить
          • показать все, что скрытоvanished
            Ответить
    • похоже ассемблерные коды прокляты - ни одного положительно комментария.
      Ответить
    • Тред зла. ^_^
      Ответить
      • бобро, боброоооо!!
        Ответить
        • Бобро скоро побьёт Зло. Уже почти у всех по -1
          Ответить
      • Б̸͓̱̥̺̜͓̗̗͉̰̺̥̽̌ͧ̅͛ͪ͊̊̌ͪ́͜͟͜О̷̸̨͖̙ͣ͌ͧͫ͛͠ ͈͙͈͚Л̡̮͕̗̠̺̺͕̩́̇ͦ̿̄̚ͅЬ͗̉ͣ̑ͧ̔̔̏ͯ̔̈́̍̈́̎̔͒̒͠ ̸̢̺͚̜̭͍̻̞̭̟͙͙͕ͅШ̵͈̪͚̦̉͆ͪ͒͛ͬ̎̔̈̈̊͘̕͠Е̏̿́̌ ̩͔͎̼̲̠̰̠̼̞͗̍ͭͩͭ̚͢͡͡ͅ ̢̼͉̲ͦͮ̉ͣ̍ͭ̔ͮͥ̌̽ͫ̓ͯ̀͟͞К̧ͭ́̎̑̈̿̄̑͛̉͐̂̇ͮ͡͡͏ ̶͉͚̹̞̣͙͖̬̘̪͚͍̦ͅР̢̤̝̻̠̳͖̫̩͕͎̗̱͙ͪͪ̈́̏̒̏̈́͘͝͞ ͚͈О̜̩̻̯̠̥̬̟̠͍̓̊ͥͣ̊ͧ̄̓ͭ̏̀̕͜В̈ͥ͆ͥ͑̓̈̓͌̊̾͢͠ ҉͏̳̱̩̫͇̞̲̹̟̝͕̼̖͖̪͓͙̗И̧̎ͮ̈́̊ͣ̍ͦ̂̃ͯͦ̀̔̓̃͛̀͜ ̴̦͖͓̮̲̣̥̝̱͍̳̬̪͙ ̷̛̥̳̞̰͕̯͔̣̤̞̼̝͓͆ͦ̿̇̓ͨ̚͘Д̧̨̛̞̬̟̱̬̠̌̋͂ͬ͂ͮ̚ ͖̠̳͉͚͚̗͚̗Л̵̸̝̤̜͇̦̪͎̞̹ͮ̐̎̓̈̌̀Я̑̓ͯ̅̿̎̂͐̓̔̅ ̱̺̫̼̻̘̝͍͎̣̩͕̹̓̎͘ ̸̶̻̮̘̙̤͚̣̰͍̗̏̎́͑͌́ͅБ̢͉̞̥͇̝̫̙̰̩͉̔͑ͮ̉̒̿͒́͟ ̪̗̺̟О̸̢̛͚̣͈͎̻͐̿̐ͮͩ̍͟Г̛̳̥̗͍̥̻̫̗̟̾̉ͧ̾̽ͪ̾͘͞ ̝А̊̇̽͏̸̺͖͔͉̬͕̼̥̱̤͠ ̵̧̟͉̭̣̫̳͖̼̲̙̭̭̮̱͇̪̯̏̈́̅͂̓̆͆ͬ͑̏̆̀̔ͦ͝͠͡Zͣͮ̐ ̶̡͔͚͉̺̖ͦ̑̊͜ͅA̸̘̖̻̯̮̭̝̥̫͚͈̯̩̥̲̿̂̽̒̉͌̓͂͝L͒ ̯̟̹̩̺̻̓ͤ͛̌̒̓͋̌͆̈́͑̆ͯ͗ͭͣ́͢͢͡Ǵ̴̡̫͙̫̼͙͇̙̋ͪ͌ ̹̹̣̻̰O̶̻̜̟͙̟̠͍̰͍͍̺̫̼̮͖ͪ̽ͪ̎̒̏͝
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Оптимизатор —– петух, у него память короткая:
      CODE:00403FC4         xor     eax, eax
      CODE:00403FC6         mov     [ds:ddUnk2_42AB0C], eax
      CODE:00403FCB         mov     [ds:ddUnk2_42AB10], eax
      CODE:00403FD0         mov     [ds:ddUnk2_42AB14], eax
      CODE:00403FD5         mov     [ds:dbUnk2_42AB5E], al
      CODE:00403FDA         xor     eax, eax
      CODE:00403FDC         mov     [ds:ddUnk2_42AB18], eax
      CODE:00403FE1         mov     [ds:ddUnk2_42AB1C], eax
      CODE:00403FE6         xor     eax, eax
      Ответить
    • показать все, что скрытоvanished
      Ответить

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