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

    −3

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    format pe gui 5.0
    
    include 'win32ax.inc'
    
      _title db '1Kbyte window',0
      _class db '#32770',0
    
      old_wndproc dd 0
    
    entry $
      xor edi,edi
      mov ecx,$80000000
      mov esi,$400000
      mov eax,WS_VISIBLE+WS_OVERLAPPEDWINDOW
      invoke CreateWindowEx,edi,_class,edi,eax,ecx,ecx,ecx,ecx,edi,edi,edi,edi
      mov ebx,eax
      invoke SetWindowLong,ebx,GWL_WNDPROC,wnd_proc
      mov [old_wndproc],eax
      invoke SendMessage,ebx,WM_INITDIALOG,edi,edi
      sub esp,32
      mov ebx,esp
    
    msg_loop:
      invoke GetMessage,ebx,edi,edi,edi
      cmp eax,1
      jb app_exit
      jne msg_loop
      invoke DispatchMessage,ebx
      jmp msg_loop
    
    wnd_proc:
      mov eax,[esp+8]
      cmp eax,WM_INITDIALOG
      je app_init
      cmp eax,WM_CLOSE
      je app_exit
      pop eax
      push [old_wndproc]
      push eax
      jmp [CallWindowProc]
    
    app_init:
      mov eax,[esp+4]
      invoke SendMessage,eax,WM_SETTEXT,0,_title
      xor eax,eax
      ret
    
    app_exit:
      invoke ExitProcess,edi
    
    data import
      library\
        kernel32,'kernel32.dll',\
        user32,'user32.dll'
      include 'api\kernel32.inc'
      include 'api\user32.inc'
    end data

    Приветствуем!
    Вот это говнокод однако?
    ...

    Запостил: chiacorp, 05 Марта 2019

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

    • Ну и в чём гк?
      Ответить
      • Реализовано через одно место (_._)
        Ответить
      • показать все, что скрытоВ том, что это лаба (хотя я не уверен, преподают ли поделие слащавца-Томаса в вузах). К тому же, не следует совсем исключать возможность наличия говна в авторе поста.
        Ответить
        • На ранних фото он действительно манерный - только не пойму, гей он, или просто воспитанный интеллигент. Изучаяролики, заметно, как сильно его волнуют и даже пугают вопросы аудитории, напряженно ловит каждое слово - вряд ли это оттого, что он сомневается в своей компетенции, тут дело в другом. На более поздних видео он держится намного более уверенно - очевидно, результат занятий с психологом, учился не бояться толпы.
          Ответить
          • показать все, что скрытоКакой багор )))
            Ответить
          • Да ты такой, чтобы судить?.. Гриштар - человек высочайшей квалификации, создатель фАсма, а вы тут все - бездари, способные только на обливания грязью.
            Ответить
            • Вообще-то он действительно слащавый.
              http://board.flatassembler.net/topic.php?t=5909&view=next

              особенно на этой фотке http://x86asm.net/fasmparty/krakow_sunday_3.jpg
              Ответить
              • вообще-то тебе давно следует вставить себе карандаши в нос и убить себя об стол
                Ответить
            • Гриштар правда крутой
              https://ok.ru/profile/556707399504
              Ответить
              • ахахахах
                я опять это видал

                Warning: mysqli_real_connect(): (HY000/1040): Too many connections in /home/g/guestinho/govnokod.xyz/public_html/wp-includes/wp-db.php on line 1531
                Error establishing a database connection
                This either means that the username and password information in your wp-config.php file is incorrect or we can’t contact the database server at localhost. This could mean your host’s database server is down.
                
                Are you sure you have the correct username and password?
                Are you sure that you have typed the correct hostname?
                Are you sure that the database server is running?
                If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.
                Ответить
    • Не знал, что в асме есть include.
      Ответить
    • invoke CreateWindowEx,edi,_class,edi,eax,ecx,ec x,ecx,ecx,edi,edi,edi,edi
      мощно
      Ответить
      • Из всех параметров этой API важны только 2, на худой конец - 3: стиль окна, его название и класс. Остальные можно тупо забить нулями. Лажа только в этом вызове?

        Хм. Регистр-счётчик используется не по назначению:

        mov ecx,$80000000

        ebx ведь нужен?
        Ответить
        • показать все, что скрытоECX - такой же регистр общего назначения, как и остальные, с разрядностью в 32 бита.
          Ответить
          • нет, не такой же
            это еще счетчик, который отвечет залуп
            Ответить
            • Залуп не нужен.
              Ответить
              • а вот суп
                из семи залуп

                три покрошены,
                четыре так брошены
                Ответить
            • залуп неудобен как и enter.
              Ответить
              • Давайте ещё вспомним XLAT и BOUND.
                Ответить
                • Зачем они никода не понимал. Ещё rep movs scas и прочий такой хлам ненужный.
                  Ответить
                  • XLAT очень удобно для таблиц преобращзования

                    а rep чтобы быстрее
                    Ответить
                    • Компактнее согласен, удобнее кто что понимает под удобством? По скорости проигрывает однозначно.
                      Ответить
                      • размер кода может быть важен
                        наприме чтобы влезть в еш
                        Ответить
                    • rep xlat
                      Ответить
                      • rep retn. Я серьёзно.
                        Ответить
                        • эй нигер

                          rep call
                          Ответить
                          • rep retn реально встречается в коде, чтобы добить буфер предиктора, когда спекулятивное исполнение опкода, следующего за retn, нежелательно.

                            Выполняется почти как nop + retn, но только считается одной инструкцией, а не двумя.
                            Ответить
                            • >, когда спекулятивное исполнение опкода, следующего за retn, нежелательно.

                              для защиты от мельдауна?
                              Ответить
                              • Там какая-то фигня была на AMD K8, когда предиктор глючил по-страшному и тратил такты на декодирование ненужной фигни, которая никогда не выполнится. Поэтому во все кокококомпиляторы добавили этот ненужный префикс перед ret.

                                Этой глючной реализации посвятили целый сайт:
                                http://repzret.org/p/repzret/

                                В 8080 никаких предикторов не было, именно поэтому я за 8080.
                                Ответить
                                • Именно потому я за "Intel"
                                  Ответить
                                  • Да, за «Meltdown», за «Spectre», за «FDIV», за «F0 0F», за вот это всё...

                                    О, сколько нам открытий чудных
                                    Приносит «Микрософта» дух
                                    И «Интел» –— сын ошибок трудных,
                                    И «Борланд» —– «Парадоксов» друг.

                                    А мне нравится обкладывать код воркэраундами и дрочить...
                                    Ответить
                                    • Справедливости ради надо сказать что интел бесплатно менял процы с F00F, а адм рекомендовал делать хуню
                                      Ответить
                                    • в 80286 не было никаких "багов"
                                      именно потому я за "IBM PC AT"
                                      Ответить
                                      • 86BUGS.LST

                                        (C) Copyright 1993, 1994 By Harald Feldmann Revision 04, Nov 3rd 1994.
                                        
                                        
                                        
                                        Hamarsoft's 86BUGS list, (C) 1993/94 By Hamarsoft (R)
                                        ──────────────────────────────────────────────────────────────────────────────
                                        
                                        The 86BUGS list, distributed with Ralf Brown's Interrupt list, is maintained
                                        and provided to you by Hamarsoft, the maker of the HAP & PAH datacompression
                                        program. Latest version of HAP & PAH is 3.14e. If you like this list you are
                                        encouraged to register the HAP 3.00 shareware program. You will receive
                                        the latest, registered, version of HAP 3.14e by air-mail on 3.5" diskette.
                                        FTP to garbo.uwasa.fi and get pc/arcers/hap300re.zip   for more info.
                                        Ответить
                                        • не открывается(
                                          Ответить
                                          • Вот отсюда можно скачать:
                                            http://www.cs.cmu.edu/~ralf/interrupt-list/
                                            Ответить
                                            • не нашел там этого файла

                                              зато нашел ответ от Ральфа где он пишет что серийник биоса из BDA не считать без помощи жопы

                                              http://www.cs.cmu.edu/~ralf/interrupt-list/faq.lst
                                              Ответить
                                              • Есть, внутри inter61d.zip.
                                                Ответить
                                                • Mnemonic: AAD
                                                  Opcode  : D5 imm8  (88=60, 86=60, 286=14, 386=19, 486=14 clocks)
                                                  Bug in  : Is an opcode variant on Intel's 88,86,286,386,486
                                                            Variant does not work on NEC's V-series, probably not on AMD CPUs

                                                  ну што я говорил?!
                                                  Ответить
                                                • слушай, давай вот про что говорим.

                                                  сколько тактов занимает инструуция mov?
                                                  Я же правильно понимаю что это зависит от наличия говна в кеше. А если его там нет, то от скорости работы памяти, наличия говна в сенс амплифаерах, открытости-закрытости ряда, короче невозможно сказать от чего это зависит?

                                                  как тогда это измерить? Вроде как Intel vTune умеет, но как понять например что скорость памяти это ботлнек?

                                                  есть какие-то инструменты?
                                                  Ответить
                                                  • Секундомер с «Алиэкспресса».

                                                    Если просто хочешь узнать на испытательном стенде, сколько тактов прошло, то ты это можешь узнать через RDTSC. Правда, я не знаю, что RDTSC покажет в многозадачной среде.

                                                    Или тебя интересует, как узнать то, от чего это зависит (наличие говна в кэше и т. п.)?
                                                    Ответить
                                                    • да

                                                      допустим, я хочу понять являетчя ли скорость мапяти ботланеком
                                                      Ответить
                                    • Парадокс это такая субадэ
                                      Ответить
                                • А "K8" —– багористый )))
                                  Ответить
                                  • Я помню K5
                                    там было написано "дизайнт вор win95"
                                    сиреневеньбкий такой
                                    Ответить
        • Чтобы не забивать байты, назначаем один раз регистру и бьём в стэк. Экономия блин, а ecx измениться не где.
          Ответить
          • показать все, что скрытоМакрос Invoke вполне может принять нули. Зачем ещё класть их на стек руками?
            Ответить
            • Может и кладёт нули используя edi!
              Ответить
              • показать все, что скрытоЗачем гадать, если можно открыть сорцы и убедиться в своей глупости?
                Ответить
                • Какой багор )))
                  Ответить
                • Дурашка, инвок раскрывается в пуши, пуш регистра занимает 1 байт, пуш константы < 256 занимает 2 байта, пуш остальных констант занимает 5 байт.
                  Ответить
                  • показать все, что скрытоСам ты дурашка, я твоя новая связная.
                    Invoke используется для удобства. Раз человек заюзал его - значит, ему важно именно удобство, а не минимализм. Если нужен минимум кода - пушайте.
                    Ответить
                    • В данном случае инвок не мешает минимализму.
                      Ответить
                • Смотри)

                  ASM получим на выхлопе 20 байт
                  use32
                  push $80000000;68 00 00 00 80
                  push $80000000;68 00 00 00 80
                  push $80000000;68 00 00 00 80
                  push $80000000;68 00 00 00 80

                  ASM получим 11 байт
                  mov ecx,$80000000;B9 00 00 00 80
                  push ecx;51
                  push ecx;51
                  push ecx;51
                  push ecx;51

                  Семь раз отмерь — один отрежь, chiacorp!
                  Ответить
                • С нулями теже яйца тока профиль другой)

                  use32;8 байт
                  push 0;6A 00
                  push 0;6A 00
                  push 0;6A 00
                  push 0;6A 00

                  use32;6 байт
                  xor edi,edi;31 FF
                  push edi;57
                  push edi;57
                  push edi;57
                  push edi;57

                  Чем больше push 0 тем лучше, а invoke что поставим то и пульнёт)
                  Ответить
    • > GWL_WNDPROC
      Хм, так в винапи можно просто заменять обработчик событий и не регать новый класс...
      Ответить
      • Верно, используется системный класс диалогов #32770
        Ответить
      • полезно иногда читать msdn, правда?
        Ответить
        • На линукс бы lsdn для xlib.
          Ответить
          • Да ради бога.
            https://www.amazon.com/Programming-Manual-Version-Definitive-Guides/dp/1565920023
            можешь ее нагуглить, она легко находится.

            Вообще "цветные книжки" по иксам это мастхев. Других источников информации (внятных) простонеит
            Ответить
            • Пошёл говнокодить на иксы.
              Ответить
              • Напрямую под xlib никто уже почти не говнокодит.
                Обычно говнокодят под xcb или под виджеты коих дохуя или под QT или под GTK или.. ну ты понял

                но ценность цветных книжек это не умаляет.
                Там есть еще зелененькая и розовенькая и еще всякие разные: по виджетам, по использованию иксов, по дисплей менеджерам, виндуо менеджерам итд


                вот они, мои няшечки
                https://www.librarything.com/series/The+Definitive+Guides+to+the+X+Window+System
                Ответить
                • Насколко вкурсе QT, GTK, XCB работают через XLIB?
                  Чем ниже тем интересней!
                  А интересно есть ниже XLIB возможность?
                  Ответить
                  • На микрокодах пиши!
                    Ответить
                  • мне казалось что XCB это нативная реализация протокола X11, как и xlib.

                    А остальные все да: через XLIB.
                    вот стек
                    https://ru.wikipedia.org/wiki/X_Toolkit_Intrinsics#/media/File:Xlib_and_XCB_in_the_X_Window_System_graphics_stack.svg



                    ниже XLIB можно конечно.
                    Читаешь про протокол
                    https://pics.cdn.librarything.com/picsizes/a6/ea/a6ea7378b64ee14597859555667444341587343.jpg

                    и реализуешь клиента X11
                    Ответить
                    • Понятно xlib=x11.
                      Ниже работа через протокол TCP/IP. Верно?
                      С микротиком так извращался)
                      СПС нужная инфа.
                      Ответить
                      • Не обязательно TCP/IP.

                        X11 ждет каково-то стрим-ориентированного протокола.
                        Это может быть unix domain sockets на юниксах, может быть names pipes на винде, да хоть последовательный порт)


                        Вот что пишет о себе XOrg (важная, но далеко не едигнственная реализация X11 севера):


                        Xorg supports connections made using the following reliable byte-streams:
                        Local
                        On most platforms, the "Local" connection type is a UNIX-domain socket. On some System V platforms, the "local" connection types also include STREAMS pipes, named pipes, and some other mechanisms.

                        TCP/IP
                        Xorg listens on port 6000+n, where n is the display number. This connection type can be disabled with the -nolisten option (see the Xserver(1) man page for details).


                        лол, я думал беркливеые сокеты убили STREAMS 25 лет назад
                        Ответить
    • а нахера вы тут ассемблер запостили, надо было бинарный дамп запринтить.
      Ответить
      • В заголовке написанно ассемблер.
        Написали бинарный, то и закинули бы бинарный)))

        Помни, ASD_77, за тобой могут следить!
        Ответить

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