1. Куча / Говнокод #25312

    −2

    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
    Мне приснился очень странный сон, который отчасти был навеян дебатами между сторонниками и противниками ООП...
    Во сне я видел паперть, на которой выступал лысый человек, похожий на Соловьева. Он очень волновался, ежеминутно протирая платком лицо и макушку.
    Господа! - наконец объявил он. Сегодня исторический день! Мы выслушаем прения сторон, в лице мэтра ООП и адепта функционального стиля. 
    Раздались бурные аплодисменты и на сцену вышли аллегорические фигуры. Мэтром ООП оказался сурового вида старик в пышной золотой мантии и 
    венце, адепт функциональщины - сдержанный юноша, очень элегантно одетый.
    Кроме них двоих, на паперть поднялся также и молодой человек в охотничьей шляпе, с куском оленьей шерсти вместо пера.
    -Томаш Грыштар, представился он, и раскланялся. Он сильно картавил, но был безукоризненно вежлив, едва не падая с ног от услужливости.
    Конферансье потёр руки. Итак господа, перейдём к делу. Сегодня мы поднимем со дна океана (шутка) на свет божий достоинства и недостатки обоих 
    парадигм а поможет нам в этом наш друг Томас. Пусть в споре откроется истина.
    -ООП не нужно, - бесцеремонно выпалил Адепт.
    -О, это очень смелое заявление! -  засмеялся конферансье.
    Мэтр густо покраснел, но не проронил ни слова.
    -Что Вы на это скажете, сударь?
    Мэтр сидел с каменным лицом. Конферансье, не дождавшись ответа, передал право слова Томасу:
    -Полагаю, что наш друг-ассемблерщик тоже имеет право высказаться.
    Тот достал из-за пазухи изящную золотую шкатулочку и, заведя ручку, открыл ее. Раздалась нежная мелодия.
    Мэтр наконец прервал обет молчания:
    -А что сталось с Вашим "Титаном"?
    -Я... Э-э-э... Потерял исходники...
    -Весьма прискорбно. Но  Вы сохранили компилятор?
    -"Фасм", сударь.
    -Господа, господа! Мы ведь собрались ради важного дела, а до сих пор ничего дельного не нашли.
    -ООП нерационально использует память,  - адепт опять вмешался.
    При этих словах Мэтр чуть покачнулся, раздался громкий скрип. Мантия его задралась - и всем стало ясно, что он сидит в инвалидном кресле.
    Томас опять достал шкатулочку, очевидно, чтобы разрядить атмосферу.
    -ООП учит плохому стилю. Адепт вынул розочку из петлицы и стал ее нюхать. Лицо у него было равнодушное.
    Мэтр вздохнул, склонил голову, но ничего не ответил.
    Томас опять достал шкатулочку.
    Конферансье вытер пот со лба и заявил: -Господа, мне кажется, мы напрасно тратим время.
    Шкатулочка вдруг ошиблась. Томас поднял ее над головой, потряс - и о ужас!- раздался громоподобный треск и в мгновение ока Томас был погребен 
    под грудой шестеренок, пружин и коленчатых валов. Конферансье и Мэтр поспешили ему на помощь. Адепт сохранял невозмутимость, не пошевелив 
    даже пальцем. 
    -Дебаты окончены. Конферансье хлопнул в ладоши и сошёл со сцены. Было видно, что он глубоко уязвлен.
    К адепту подошёл человек в сюртуке и похлопал его по плечу. Юноша ойкнул и недовольно обернулся.
    Оказалось, что это полуидиот, очевидно, больной синдромом Дауна. Опекун вручил ему ниточки от красного и жёлтого воздушных шариков, 
    отчего инфантильное лицо юноши озарилось радостью. Они медленно пошли по тропинке...
    Томаш и Мэтр долго смотрели ему вслед.
    -Как Вы думаете, коллега, уместны ли асмовставки в языке высокого уровня?
    -Почему бы и нет?
    -Я рад, что Вы так считаете.

    ...

    Запостил: cmepmop, 15 Января 2019

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

    • [:/\/\/\/\ /\/\/\/\/\/\/:]
      Ответить
    • И кстати асмовставки в x64 запретили в VC
      Ответить
      • Вот уроды!
        Ответить
      • @И кстати асмовставки в x64 запретили в VC

        Не сразу понял глубинный смысл этой фразы. Остались ли после этого сомнения, что VC - говно? Когда-то мерилом приемистости языка было наличие асмовставок - майкрософт перешагнул даже через этот стереотип. Что будет дальше?
        Ответить
        • Масм есть - асмовставки не нужны
          Ответить
          • А как же оптимизация кода?
            Ответить
            • Компилятор сделает это за тебя. Если очень хочется -> масм
              Ответить
              • Настолько хорошо оптимизирует? Пх.
                Ответить
                • Достаточно хорошо, чтобы не пердолиться с непереносимым говном
                  Ответить
                  • Недостаточно хорошо, чтобы не создавать в багзилле GCC багов с меткой "missed-optimisation" (если начать дрючить эту вашу MSVC, то там тоже дохренища подобных оптимизационных багов повсплывает)
                    Ответить
              • > масм
                Ну нет, внешний асм ты сможешь дёргать только через jmp/call, т.е. придётся достаточно большой кусок писать на асме, конвеншн соблюдать и т.п.

                Так что у вставок всё-таки было теоретическое преимущество (как студия раскрывала их на практике см. примеры ниже по треду).
                Ответить
                • Функции, прилинкованные из другого объектного файла, кокококомпилятор принципиально не мог заинлайнить, а сишные функции с асмовставками мог?
                  Ответить
            • стертор, мне иногда кажется что ты живешь в 1997м году.

              Ты пишешь на дельфи, и оптимизируешь код посредством асмовставок. Какую конкретно задачу ты решал что в ней асмовставка давала настолько серьезный прирост перформанса что стоила ебли?

              Брутфорсил пароли?
              Ответить
          • Нахуй масм. Я за кроссплатформенность, я за S" Forth" fasm.
            Ответить
            • Решил попробовать переписать код с насма на фасм
              Выяснилось, что фасм 32-битный и на "WSL" не работает, впрочем это обходимо и не самое важное
              Но у фасма настолько все плохо, что даже нельзя папку с инклюдами задать, и в целом из опций компилятора есть только хуй, масло, их комбинации и хелп
              Ответить
              • Мне, пожалуйста, масла без хуя. Хелпом можно не приправлять.
                Ответить
            • скомпилируй fasm под ARM мне, если ты за кроссплатформенность
              Ответить
              • Я имел ввиду, что fasm могет собирать исполняемые файлы под разные оси, или вообще просто любой бинарный файл (как, например, под КолибриОС, сам осемблер они портировали, а вот форматтер не сделали и заголовки ручками или макросами собирают, ещё на формуме фасма я видал как им картинки генерили и пр., ещё я как-то хотел им мидюхи генерить, но так и не закончил:( ), сам-то fasm только на x86 работает. Вроде бы Томаш сейчас портирует его на x64. Есть кроссассемблер FASMARM: http://arm.flatassembler.net
                Ответить
                • > Я имел ввиду, что fasm могет собирать исполняемые файлы под разные оси

                  И что? Сам fasm может запускаться только на x86-совместимом говне, т.к. написан на самом себе (нахрена?).

                  > Вроде бы Томаш сейчас портирует его на x64

                  Лучше б портировали на Си.

                  > Есть кроссассемблер FASMARM: http://arm.flatassembler.net

                  А для AVR? А для MIPS? GNU assembler это все умеет https://sourceware.org/binutils/docs/as/Machine-Dependencies.html
                  Там даже RISC-V и MMIX(придуманная Дональдом Кнутом архитектура) есть. Поэтому я за GNU assembler
                  Ответить
                • > fasmarm
                  А потом его тоже надо заселфхостить.
                  Ответить
                  • А самое важное - заселфхостить версию под AVR.
                    Ответить
              • > под ARM
                Да это похуй, можно и с x86 кросс-конпелять. Другое дело - умеет ли он генерить код для чего-то кроме x86.
                Ответить
                • Вот тут ентузиасты компилируют им под разные платформы от 8080 до arm:
                  ttp://board.flatassembler.net/forum.php?f=22
                  Ответить
                  • Лень читать... Сами макроёбят инструкции?
                    Ответить
                  • И нахрена? Наверняка такое же говно можно запилить в компилтайме на крестоговне через шаблоны и констэкспры, которыми продрачивается и парсится в компилтайме длиннющая строка с кодом на ассемблере и на основе этой хуйни делается куча опкодов и пишется в какой-нибудь std::string, но на кой хер это вообще делать, если можно с тем же успехом просто написать с нуля ассемблер?
                    Ответить
                    • boost::asm::x86::mov<boost::asm::x86::register::eax, boost::asm::x86::register::ebx>::bytes
                      Ответить
                      • const std::string asm_src = R"(
                            XOR RAX, RAX
                            MOV RBX, RCX
                        )"
                        
                        auto opcodes = compiletime_asm(asm_src);
                        
                        
                        std::ofstream ofs ("opcodes", std::ofstream::out);
                        ofs << opcodes;
                        ofs.close();
                        Ответить
                        • Можно ещё опкоды ебануть в массив в секции кода. А потом кастануть в функцию и вызвать.
                          Ответить
                          • Можно так реализовать асмовставки, если их нет. Только на каждую асмовставку будет вызов функции, что не есть хорошо.
                            Ответить
                            • Блин, всё придумано до нас :(

                              Четыре года назад какой-то чувак замутил асмовставки на шаблонах.
                              Ответить
                        • Надо запилить компилтайм-работу с ФС, чтоб полностью на этапе компиляции опкоды генерировать и сразу в файл писать, и не нужно было даже запускать после компиляции для записи в файл. В процессе компиляции программа (точнее, компилирующий ее компилятор) может всякую пишушню выводить, типа варнингов и ошибок компиляции, но через варнинги и ошибки компиляции бинарные данные к сожалению не нагенерировать
                          Ответить
                          • Можно высрать код в отдельную секцию и вырезать её потом из бинаря. Немного неспортивно, конечно.
                            Ответить
                            • EXE2BIN
                              Ответить
                              • Оно никакой своей хуйни не добавит? Только байты из моих секций и ничего больше?
                                Ответить
                                • Ты питора абеля не читал штоль. В досовские времена использовали масм, он генерил ехешники, чтобы собрать ком делали ехешник с одной секцией и с базой 100h, а потом ехетобин ввдирал из него эту сексию.
                                  Ответить
                                  • Именно поэтому я никогда не юзал масм.
                                    Ответить
                                    • Я тоже, но питора абеля читал. Ещё в колледжэ у нас методичка что нам дали была по масму, хотя писали мы на тасме, но всем было похуй.
                                      Ответить
                                      • А у фасма, если ничего не путаю есть какой-то формат (-f bin вроде), который выводит голую секцию кода (ну типа как com-файл, но только для 32-битного кода). Т. е. даже exe2bin не нужен.
                                        Ответить
                                        • И формат и тип кода задаются в исходнике:
                                          format binary as "com" ; двоичный файл с расширением ".com"
                                          
                                          use16 ; осемблировать 16-битный код, если не ошибаюсь он установлен по умолчанию
                                          
                                          org 100h ; достаточно только этой директивы, по ней fasm сам "понимает" что это 16-битный ком
                                          Можно даже смешивать в одном файле разные типы кода.
                                          Ответить
                                  • У меня, кстати в папке для всякого хлама всьо ещо лежит этот Абель. Мне сперва показалось, что это обычные тесктовые файлы с расширением DOC, но походу это надо в какой-то специальной программе читать:
                                    EБИТЫ И БАЙТЫ
                                              F------------------------------------------------------------
                                              
                                                 Для  выполнения  программ  компьютер  временно записывает
                                              программу  и данные  в основную память.  Это память, которую
                                              люди имеют в виду, когда утверждают, что их компьютер имеет,
                                              например,  512К памяти. Компьютер имеет также ряд pегистров,
                                              которые он использует для временных вычислений.
                                                 Минимальной  единицей  информации  в  компьютере является
                                              GбитH.  Бит  может быть  выключен,  так что  его значение есть
                                              нуль,   или  включен,  тогда  его  значение  равно  единице.
                                              Единственный бит не  может  представить  много  информации в
                                              отличие от группы битов.
                                                 группа  из  девяти битов представляет собой  GбайтH; восемь
                                              битов которого содержат данные и один бит -  контроль на чет
                                              ность.
                                    Ответить
                                    • Возможно, это файл для программы «Лексикон». Файлы .lex были похожи на текстовые, но иногда в них встречались всякие символы невпопад, например цифра «2» перед каждым заголовком.
                                      Ответить
                                      • > файл для программы «Лексикон»
                                        Нет, пишут, что у лексикона эскейпом был 0xFF. А тут 0x1B.

                                        Нагуглил какие-то эскейпы для эпсоновских принтеров ESC/P. E - включить bold, F - выключить bold, G - включить подчёркивание, H - выключить подчёркивание. Вроде по смыслу подходит.
                                        Ответить
                                        • Как после этого доказать, что мы не файки одного человека?
                                          Ответить
                                          • Я даже не знал про эти принтеры и их коды... У меня первым и последним принтером была HP'шная лазерка. До сих пор работает, кстати. Хотя ей больше 12 лет.
                                            Ответить
                                            • А в чём она принимает данные: Postscript, PCL или какой-нибудь другой формат?
                                              Ответить
                                              • Да хуй знает, меня эти печатные протоколы никогда не интересовали... Но там USB, так что маловероятно, что из DOS'а с ним что-то получилось бы сделать.
                                                Ответить
                                                • "PCL" –— это тупо печатный протокол, как и "ESC/P".

                                                  А вот "PostScript" —– это уже тьюринг-полный язык программирования с четырьмя стеками, похожий на "Forth".
                                                  Ответить
                                                • Из голого DOS'а действительно к USB-принтеру обратиться почти нереально. А вот из VDM можно, если предварительно выполнить net use lpt1 (принтер должен быть расшарен как сетевой).
                                                  Ответить
                                                  • Из голого доса вполне можно обратиться к принтеру, если запрограммировать хост контроллер (ehci например)
                                                    Ответить
                                                    • Лень же, придётся контроллер изучать. А EHCI вроде бы программируется совсем не так, как OHCI и UHCI, так что код будет ещё и непортабельным...

                                                      Но да, теоретически возможно. Есть уже готовые драйвера для DOS для некоторых классов устройств (помню, что есть для mass storage и для мышек).
                                                      Ответить
                                                      • Они не такие уж и сложные, за пару вечеров можно накатать драйвер если не в продакшен...

                                                        Жопа в том, что тот же "ECHI" не умеет в медленные устройства и скидывает их "UHCI" или "OHCI". Поэтому тебе придётся писать сразу джва драйвера.

                                                        Только "xHCI" умеет все скорости одновременно. Именно поэтому я за "xHCI".
                                                        Ответить
                                                        • ты про контроллер-компаньйон?
                                                          Ответить
                                                          • > компаньйон
                                                            Ага, про него.
                                                            Ответить
                                                          • З.Ы. Хотя, наверное, можно забить на EHCI и юзать только UHCI. Медленно, зато всего один драйвер.
                                                            Ответить
                                                          • З.Ы. Но встречаются и материнки где только ECCHI с rate-matching хабом.

                                                            Так что если пилить не только падсибя, то нужны все 4 драйвера + поддержка хабов.
                                                            Ответить
                                                            • Кстати, помнишь срач про сёму а ahci?

                                                              Я тут вспомнил что винда могла внезапно переключить ATA в режим PIO, даже очень хороший UltraDMA.

                                                              Причины не очень ясны, но народ там это отключал через реестр.
                                                              нагуглил даже:
                                                              http://www.it-simple.ru/?p=6123

                                                              Надо бы ему предложить позырить в диспечтер устройств, вдруг там pio?

                                                              Сам я в жизни видел только переключение в PIO от 40ка жильного кабеля, но у него же sata
                                                              Ответить
                                                              • >> винда могла внезапно переключить ATA в режим PIO

                                                                Прыщебляди соснули!
                                                                Ответить
                                                              • Не внезапно, а после нескольких ошибок. Было у меня на сбойном винте. Еле нагуглил причину.
                                                                Ответить
                                                                • Значит, после нескольких ошибок Windows делает вывод, что канал связи с винчестером не тянет такой поток данных (помехи в шлейфе?) и поэтому переходит на более низкую скорость?
                                                                  Ответить
                                                • USB это всего лишь порт. Протокол от него не зависит.

                                                  Какой именно способ описаяния страницы там идет: PCL, PostScript или вообще аски текст с ESC последовательносями Epson -- это всё не важно.

                                                  Бывают даже принтеры которые умеют XPS и битмапы GDI (винпринтеры).

                                                  Читни документца, в общем
                                                  [quote]
                                                  This specification does not define Page Description Languages (PDL) or Printer Control Protocols (PCP).
                                                  This specification defines interfaces that are intended to support existing PDLs and PCPs.
                                                  [/qute]
                                                  https://www.usb.org/sites/default/files/usbprint11a021811.pdf
                                                  Ответить
                                    • Хм, перед этими буквами стоят эскейпы (0x1B).
                                      Ответить
                                      • Может быть, это файл для матричного принтера «Epson»? У них как раз были эскейпы.

                                        Эскейпы есть и в «PCL», но там коды длиннее.
                                        Ответить
                                        • Блин, ты первый :(
                                          Ответить
                                          • http://lprng.sourceforge.net/DISTRIB/RESOURCES/PPD/epson.htm

                                            ESC E –— начало выделения (курсив?).
                                            ESC F –— конец выделения.
                                            ESC G –— начало двойного прохода (жирный?).
                                            ESC H –— конец двойного прохода.

                                            Всё сходится.
                                            Ответить
                                    • >512К памяти
                                      ггг
                                      Ответить
                                    • > группа из девяти битов представляет собой байт

                                      что, простите?
                                      Ответить
                                      • Ещё до того, как придумали оперативку с ECC, была девятибитная оперативка. Девятый бит не был доступен пользователю, он автоматически контроллером выставлялся так, чтобы сумма битов была чётной. Если вдруг в какой-то момент сумма битов оказывалась нечётной, контроллер принимал решение, что был скачок напряжения или память неисправна, и вешал комп намертво.

                                        Но девятибитная оперативка использовалась не везде.
                                        Ответить
                                        • > девятибитная оперативк
                                          В циклоняшке тоже девятибитная. Как и умножители.
                                          Ответить
                                          • Питер Нортон в своё время ещё ругался на такую оперативку. Он считал, что нельзя считать зашкваренной всю память только из-за того, что одна ячейка зашкварилась.
                                            Ответить
                                            • > ругался на такую оперативку
                                              В циклоняшке не обязательно юзать этот бит под ECC. Можно просто как девятый бит.
                                              Ответить
                          • Ну или через линкер скрипт слинковать в raw.
                            Ответить
                    • mov($eax, $mem[$ebx]);
                      Ответить
                      • Кстати, а ведь "PHP" неплохо подходит для написания ассемблеров. И даже очередную макрохуету изобретать не надо.
                        Ответить
                        • Нет, fasm и fasmg для этого лучше подходят, с ними получается вполне обычный ассемблерный синтаксис, обычные мокросы, обычные метки, обычные символьные константы, обычные директивы типа label, local, extern и прочие org'ии, для них нужно только мнемоник намакроёбить, а все эти db,dw,dd,rb,rw,rd,file и т.д., уже есть и от целевой рахитектуры не зависят.
                          Ответить
            • Кстати, есть совместимый с MASM ассемблер, который работает не только на винде, да и под какой-нибудь ARM его тоже собрать можно попробовать, раз он на Си написан: https://jwasm.github.io/
              Ответить
              • Жаль, что сайт japheth.de мёртв (хотя из вебархива всё можно достать). Я у этого автора нашёл «HXRT» –— DPMI с эмуляцией функций «Win32», в котором даже «FAR» запустился из голого «DOS».

                Другие подобные проекты («Borland Power Pack» a. k. a. «32RTM», «WDOSX», «Pharlap TNT DOS Extender», «Doswin32») запустить «FAR» не могли.
                Ответить
                • Автор на гитхаб переехал
                  https://sourceforge.net/p/jwasm/discussion/927109/thread/c2dc7e7a/?limit=25#4895

                  https://github.com/Baron-von-Riedesel это его аккаунт
                  Ответить
                  • Спасибо! Вот это вообще взрыв моего петушиного мозга:
                    https://github.com/Baron-von-Riedesel/Dos64-stub/tree/master/src
                    Ответить
        • Кстати в покойном итанике асмовставки сразу были запрещены, ибо кококококмпилятор тупо не мог в такое.
          Ответить
          • Студия умела в итаниум?
            Ответить
            • Умела. И видимая, и интеловский кококомпилер. Причём это у icl в доке было указано, шта ассемблер и Ц в одном исходнике недопустимы.
              Ответить
              • В исходнике программы на S" Forth" допустимо всё на что хватит фантазии автора. Именно поэтому я за S" Forth".
                Ответить
      • Да и похуй, если честно. Студийные вставки всегда выглядели как инородное говно если посмотреть на дизасм. Это ж не gcc, который умеет очень аккуратно вшивать вставки в код.
        Ответить
      • Студия: https://godbolt.org/z/UIWOxy. Обрати внимание, как i передаётся через память, как приходится писать джва лишних мува.

        GCC: https://godbolt.org/z/fJZGHB. Сможешь найти вставку среди остального кода?
        Ответить
        • >Сможешь найти вставку среди остального кода?


          mov     ecx, DWORD PTR [esp+4] <-- аргумент (n) сюда пошел
                  test    ecx, ecx <--если 0 -- сразу..
                  jle     .L4 <--...нахуй
                  xor     edx, edx <--обнуляем
                  mov     eax, 1 <--Ложим в возвращаемое значение 1 (по калконвенции) (в коде это tmp)
          .L3: <--цыкол начался
                  mul eax <-- вот твоя вставка
                  add     edx, 1 <--увеличили счетчик цикло
                  cmp     ecx, edx <-- сравнили с аргументом (n)
                  jne     .L3   <--мало? пошли снова 
                  ret <--иначе всё. В возвращаемом значении (eax), напомню, tmp.
          .L4:
                  mov     eax, 1 <--нахуй -- это сюда. Ложим в возвращаемое значение 1 (по калконвенции)
                  ret <--все


          На уровне уроков информатики-то я асемблер знаю
          Ответить
          • Ну я же не о том, что её нет. А о том, что она не выглядит как кусок уёбищного инородного говна посреди дизасма. gcc её аккуратно интегрировал в свой код.

            З.Ы. Лол, ты первую версию успел открыть. Я там таб забыл въебать, так что вставка палилась и без знания асма :)
            Ответить
            • а еще она палилась по наличию инструкции mul, которая больше нигде не встречается

              надо было туда add какой-нить забабахать
              Ответить
              • Кстати, с асмовставками в gcc есть забавный хак, позволяющий конпелировать 16-битный код.
                Ответить
                • а запускать его как?:)

                  юниксы с гццой разве умеют в памяти сегмент с 16ти битным кодом?
                  Ответить
                  • Ступайте со своими плюсовыми спорами в другие треды. В моём не спамьте.
                    Ответить
                    • Ступай на другой сайт. Чаоси.
                      Ответить
                    • Тред про ассемблерные вставки. Мы обсуждаем ассемблерные вставки. Что не так?
                      Ответить
                  • А зачем это запускать в юниксе? Это скорее для каких-нибудь загрузчиков...

                    Да и 16-битный код там не совсем настоящий. Он юзает 32-битные регистры и 32-битную адресацию. Просто все инструкции обмазаны префиксами.
                    Ответить
                    • точно, груб какой-нить же или лило.

                      Кстати, современный бутпротокол вроде такой что загрузчик должен переключиться в 32битный, а раньше вроде не должен был, не?

                      А что в коде 16ти битного? инструкции?
                      Ответить
                      • Насколько я помню, у ядра линупса, если оно не косит под UEFI бинарник, до сих пор четыре точки входа - 16, 32 и 64 + ещё одна 16 для прямого старта с дискетки/флешки. Загрузчик может юзать любую из них, какая ему удобней.

                        > А что в коде 16ти битного
                        Его можно запустить в реалмоде (не на труъ 16-битном проце, само собой).
                        Ответить
                        • З.Ы. Лол, перечитал бутпротокол, их там шесть:
                          - 16 как бутсектор, 16 для загрузчика
                          - 32 обычная, 32 для UEFI
                          - 64 обычная, 64 для UEFI
                          Ответить
                          • жэсточайше конечно:)

                            Кстати, когда грузишься в 16битном режиме то можно попросить ядро перечислить все видеорежимы для виртуальной консоли с фреймбуфером (vga=ask)

                            а в 32х битном -- хуй. Это потому что vga=ask через vesa bios работа?
                            Ответить
                            • Ну да, там 16-битная точка входа как раз видеорежим ставит через bios. И карту памяти собирает. Больше она вроде ничего интересного и не делает.
                              Ответить
                              • што е карта памяти?Структура в памяти со знанием о том, по какому адресу загружено ядро и всякие другие адреса?
                                Ответить
                                • > што е карта памяти
                                  "E820".
                                  Ответить
                                  • который по Int15h-то?

                                    это такие циферки которые репортуют обычно ядра большинства юниксподобных осей, если там явно не отключить этот вывод (quiet там какой-нито) и пугают нубов страшно

                                    хуй@хуй:~$ sudo dmesg | grep 820
                                    Password:
                                    [    0.000000] e820: BIOS-provided physical RAM map:
                                    [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
                                    [    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
                                    [    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
                                    [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000dffeffff] usable
                                    [    0.000000] BIOS-e820: [mem 0x00000000dfff0000-0x00000000dfffffff] ACPI data
                                    [    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
                                    [    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
                                    [    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
                                    [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000004295fffff] usable
                                    [    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
                                    [    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
                                    [    0.000000] e820: last_pfn = 0x429600 max_arch_pfn = 0x400000000
                                    [    0.000000] e820: last_pfn = 0xdfff0 max_arch_pfn = 0x400000000
                                    [    0.000000] e820: [mem 0xe0000000-0xfebfffff] available for PCI devices
                                    [    0.251789] raid6: sse2x1   xor()  7820 MB/s
                                    [    0.607072] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
                                    [    0.607078] e820: reserve RAM buffer [mem 0xdfff0000-0xdfffffff]
                                    [    0.607079] e820: reserve RAM buffer [mem 0x429600000-0x42bffffff]
                                    Ответить
                                    • у винды есть vmmap утилита
                                      охуенная кстати
                                      Ответить
                      • Так, я походу недооценил фантазию Линуса. Там даже с закосом под UEFI посреди PE'шных хедеров в конце первого сектора видно знакомое 55 AA...
                        Ответить
                        • Т.е. у UEFI'шной сборки ядра точек входа восемь - 6 описанных выше и ещё пара от MZ и от PE. Вот это кентавр!
                          Ответить
                          • Жаль, что ELF или a.out с PE не склеить. Да и даже у UEFI и винды разные подсистемы :(
                            Ответить
                            • Хм, а вдруг они для .net приложений subsystem не смотрят?
                              Ответить
                              • у .net приложения же обычное win32 которое импортирует mscoree, или я тебя не понял?
                                Ответить
                              • у .net приложения же обычное win32 которое импортирует mscoree, или я тебя не понял?
                                Ответить
                                • Пишут, что начиная с XP эта нативная заглушка там только для красоты.
                                  Ответить
                                  • любопытно: на [email protected] открыл powershell_ise в depends.exe и в [email protected]

                                    И там и сям нет ни одного импорта!

                                    Открыл 32х битную версию (в syswow64) и там импортят mscorsee а уже он импортит все остальное

                                    Выходит что загрузчик винды понимает .netовый хедер у 64битного PE и не требует костыля

                                    Все это так странно...

                                    Вероятно про это пишет Рихтер или Руссинович, но я их читал в до64хбитные времена(
                                    Ответить
                                  • продолжаем эксперемент
                                    dumpbin от студии -- лучший друг виндоёба

                                    x86
                                    Dump of file C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell_ise.exe
                                    
                                    File Type: EXECUTABLE IMAGE
                                    
                                      Section contains the following imports:
                                    
                                        mscoree.dll
                                                    402000 Import Address Table
                                                    4135DE Import Name Table
                                                         0 time date stamp
                                                         0 Index of first forwarder reference
                                    
                                                        0 _CorExeMain


                                    импорт есть

                                    x64
                                    c:\>dumpbin /IMPORTS C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.e
                                    xe
                                    Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
                                    Copyright (C) Microsoft Corporation.  All rights reserved.
                                    
                                    
                                    Dump of file C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
                                    
                                    File Type: EXECUTABLE IMAGE
                                    
                                      Summary
                                    
                                           24000 .rsrc
                                           12000 .text


                                    импорт нет

                                    при этом в хедерах у x64 ни слова про .nET

                                    Есть правда /CLRHEADER (у всех есть).

                                    Как лоадер понимает? Неужто читает этот Header?
                                    Ответить
                                    • > как понимает
                                      В data directory есть слот под CLR заголовок, проверь.
                                      Ответить
                                      • Тогда почему в 32 это не юзать?

                                        Или это костыль чотбы работать на машинах типа win98, где вообще нет знания про .net?
                                        Ответить
                                        • Походу костыль. Ну и в mixed сборках даже в 64 должен быть нативный код...

                                          Кстати, попробуй собрать простую прогу на c#. А то вдруг тебе просто такие бинари попались.
                                          Ответить
                                          • собрал чисто managed сборку. В 32битном режиме импорт есть
                                            в 64битном -- нет
                                            Менял через build -> platform target.

                                            Ну вероятно заголовок для x64 и ABI придумывали когда уже знали про .net

                                            Ну а когда .net только изобрели, невозможно же было пропатчить все старые ОСы, вот и сделали костыль
                                            Ответить
                          • Кстати, о кентаврах. Я вспомнил EMX — порт gcc на OS/2 и DPMI. Там линкер умудрялся к a.out-файлу прилеплять заголовки LX и MZ, причём не a.out был внутри LX, а LX был внутри a.out, но при этом результирующий файл был валидным и с точки зрения MZ, и с точки зрения LX.

                            Был аналогичный проект RSX, в котором вместо a.out и LX использовались COFF и PE соответственно (но тут проще, потому что PE в себе содержит диалект COFF).

                            Были кентавры и попроще: MZ и досовский драйвер устройства в одном.

                            А ещё были вирусы Esperanto и Winux...
                            Ответить
                            • > MZ и досовский драйвер устройства в одном.
                              который можно через DEVICE (или load?) в config.sys загрузить?

                              я в детстве писал .exe который загружался в память или делал terminate stay resident (и вешался на прерывание), могу ли я считать что совместил MikeZbikovski и драйвер)?
                              Ответить
                              • Были именно гибриды, которые можно было в и config.sys загрузить через DEVICE, и из командной строки выполнить как EXE-файл.

                                Трюк был основан на том, что заголовки DEVICE начинались не с самого начала, поэтому не портили заголовок MZ.
                                Ответить
                            • Настоящий Кентавр это ядро XNU.
                              Там внутри Mach, сверху BSD
                              Ответить
                            • А как они a.out и MZ слепили? Там же меджики в первых байтах конфликтуют.
                              Ответить
                              • a.out начинается не с нулевого смещения, а идёт где-то после заголовков MZ. Т. е. линкеры его как чистый a.out не воспримут.

                                Погуглил, «RSX» тоже основан на a.out, и в нём тоже a.out начинается где-то в середине файла. Я перепутал: в «EMX» сигнатура a.out идёт после LX, а в «RSX» сигнатура a.out идёт до PE.

                                Офтопик: а ведь дебиановские пакеты представляют собой архив «AR», такой же как у библиотек кокококомпиляторов с расширением «.a». Можно собрать архив, кокококоторый можно скармливать и линкеру, и «dpkg»?
                                Ответить
                          • Хорошо, что не семь точек выхода!

                            https://bit.ua/wp-content/uploads/2015/10/1406_cartmanMephisto.jpg
                            Ответить
                    • >> Просто все инструкции обмазаны префиксами.

                      Встроенный ассемблер «Трубопаскакаля» не понимал инструкций, которых нет в 8086. Поэтому чтобы использовать 32-битные данные или 32-битные смещения (из 16-битного кода), приходилось лепить DB 66H или DB 67H соответственно и инструкцию для 16-битных данных/смещений. Прикол заключался в том, что некоторые регистры для 16-битного режима и для 32-битного режима закодированы по-разному (а одно из значений байта mod R/M ещё и требует за собой байт s-i-b, что вообще ужас). Поэтому получалась криптушня:
                      db 66h; db 67h; mov ax, [bp + si] {интерпретируется как mov eax, [edx]}

                      Что eax соответствует ax, нетрудно догадаться. Но как догадаться, что [bp + si] соответствует [edx]?
                      Ответить
                      • > криптушня
                        Я бы тупо через db наебашил и коммент добавил. Ибо этот пиздец всё равно не читается.
                        Ответить
                        • В директиве «inline» в «TP» («BP») так и делали:
                          http://gcode.cx/ngk/#!/25041#comment438139

                          В инструкциях опкоды, мнемоники в комментариях.
                          Ответить
                        • А вообще сложно выучить что ли?
                          [BX+SI] с префиксом 67H –— это [EAX].
                          [BX+DI] с префиксом 67H –— это [ECX].
                          [BP+SI] с префиксом 67H –— это [EDX].
                          [BP+DI] с префиксом 67H –— это [EBX].
                          [DI+константа] с префиксом 67H –— это [EBP+константа].
                          [BP+константа] с префиксом 67H –— это [ESI+константа].
                          [BX] с префиксом 67H –— это [EDI].

                          Нужно запомнить, что [SI] с префиксом 67H превратится в тыкву; что [константа] превратится в [ESI], а сама эта константа исполнится как опкод; а также что [DI] без смещения наоборот потребует константу и превратится в [константа].

                          А префикс 66H можно вообще использовать без проблем, только для immediate-констант придётся добавлять два байта через DB/DW.

                          -----

                          В «PDP-11» такой фигни не было, именно поэтому я за «PDP-11».
                          Ответить
                          • Я тоже за PDP-11, тем более что там есть UNIX
                            Ответить
                            • »UNIX« можно сделать для чего угодно. Главное, чтобы для этого был кококококомпилятор сишки.
                              Ответить
                              • да ну?
                                ну-ка сделай мне на 8086
                                Ответить
                                • http://www.singlix.com/runix/runix8086.html
                                  Ответить
                                  • но как? оверлеи? а как безопастность?
                                    Ответить
                                    • А я знаю? Я эти куклы первый раз вижу.

                                      У них лежит архив с исходниками и с документацией. Можешь изучить, если интересно.
                                      Ответить
                                      • Retro UNIX 8086 v1 operating system has been developed by Erdogan Tan as a special purposed derivation of original UNIX v1 (by Ken Thompson, 1970-1972).



                                        Source code has been ported from PDP-11 Unix assembler syntax to Microsoft Macro Assembler (INTEL x86 real mode) syntax and original unix source code has been modified for IBM PC/AT compatibility with standard ROM BIOS functions, without dropping/removing original UNIX v1 multitasking (time-sharing) features.
                                        Ответить
                                    • Офтопик. Смотри, какая свалка на том сайте:
                                      http://www.singlix.com/trdos/archive/
                                      Ответить
        • И это при том, что для gcc асмовставка - тупо кусок текста, который он копипастит не читая. Даже \t и \n приходится руками втыкать.

          А студия реально понимала написанное, как минимум затронутые командами регистры могла определять... Видимо из-за этой сложной реализации они и забили на amd64.
          Ответить
          • У нас даже в каком-то говнокоде была asm-инъекция: если использовать имя переменной с баксом, то «gcc» передаёт её ассемблеру, не читая, а «gas» в режиме «AT&T» понимает бакс как начало immediate-константы.
            Ответить
          • Через асмовставку можно даже несколько раз повторить повторить сгенерированный из сишки ассемблерный код: https://govnokod.ru/13546 (наанроллить)
            Ответить
            • Это даже круче, чем мокропрепроцессор!
              Ответить
              • Внезапно пронял что микропроцессор это вовсе не маленький макропроцессор.
                А макропроцессор это вовсе не большой микропроцессор
                Ответить
                • А я раньше думал, что макропроцессор –— это такая штука:
                  https://habr.com/ru/post/395919/

                  По аналогии с макроавтобусом:
                  https://tgraph.io/file/ae115e7022c51df21b978.png

                  P.S. Когда же поисковики перестанут меня исправлять. МАКРО я хочу, а не микро, дурилки картонные!
                  Ответить
                  • Кстати, действующая модель макроавтобуса:
                    https://tjournal.ru/transport/32217-v-kitae-ispytali-deystvuyushchuyu-model-avtobusa-budushchego
                    Ответить
        • Понял, в чём дело. Встроенный ассемблер «gcc» (и «clang») использует макроподстановки: он может поменять регистры, чтобы избежать лишних мувов. Другие же кококомпиляторы со встроенным ассемблером («MSVC», «Borland», «Digital Mars», «Watcom», «Intel») вставляют твой асмокод как есть. Ты им даже не можешь сообщить, какие регистры используешь.

          Короче, прыщебляди соснули, как обычно.
          Ответить
          • Прыщебляди соснули в удобстве (надо расписывать регистры вручную) но выиграли в качестве.
            Ответить
            • А какие ещё компиляторы бывают с асмовставками (я сейчас про произвольные ЯП)?
              Ответить
              • Gforth, SP-FORTH, Win32FORTH, PFE.
                Ответить
                • Возможно ещё и SwiftForth и SwiftX, они вроде реализуют стандарт ANS'94, значит как минимум слова CODE ;CODE и END-CODE должны быть. Тем более SwiftX для ембедед разработки.
                  Ответить
            • а как дела у шланга?

              соснули-ли бздубляди и макоёбы?
              Ответить
              • Бзднул через шланг сосущему макоёбу за щеку. Проверь.
                Ответить
                • Перефразирую

                  Поддерживает-ли асм всавки компилятор clang для llvm?

                  Его используют BSD: как обычные, так и DarwinBSD (на которой построены iOS и Mac OS X).
                  Ответить
                  • Поддерживает, точно такие же как у гцц
                    Ответить
                  • Проверь:
                    http://clang.llvm.org/compatibility.html#inline-asm

                    Он один-в-один скопирован с «gcc», только проверка размеров аргументов более строгая. Ну то есть «add $4, (%rax)» писа́ть нельзя, нужно явно указать, что ты хочешь скопировать: байт, слово, двойное слово, четверное слово...

                    Ассемблер интегрированный, а не «gas».
                    Ответить
                  • Иньтересно, бывают ли "LLVM"-встсавки?
                    Ответить
                    • а вставки из CLRнутых или JVMнутых опаопаопапакодов?
                      Ответить
                      • В этом нет смысла, а вот в "LLLVM" есть векторные операуии.
                        Ответить
                        • страшно подумать во что они превращаются в ЦПУ где нету векторов
                          Ответить
                    • Это всё равно, что играть на рояле пальцами куклы-марионетки.
                      Ответить
                      • ой, да ты хоть помолчи
                        ни вообще нихуя не знаешь, только гомосятину свою равзодить можешь
                        Ответить
                        • взял паяльник и пощекотал твои соски, проверь.
                          Ответить
                          • говноед, пускай тебе три камеринца прямую кишку порвут и чтоб ты от заражения крови загнулся
                            Ответить
                            • Вероятно, тебе будет интересно, что первым парнем, чьей спермы я отведал, был мой двоюродный брат; он незаконнорожденный, так что всё ок. Ему было 14, мне - 20. Изрядно насмотревшись порнухи, мне захотелось мужской близости, а он был в зоне досягаемости. Я буквально не давал ему проходу, постоянно лапал и склонял к близости. Я отсосал ему, когда он спал. Он проснулся, но сделал вид, что спит. Маленький пидорок.
                              Ответить
                              • Какой же ты гнилой
                                Ответить
                              • доктор, в одной из статей Вы указали, что у подростков горькая на вкус сперма. То есть, знание и в самом деле было подкреплено опытом?
                                Ответить
                                • ссылку на статью.
                                  Ответить
                                  • статья есть в уголовном кодексе за совращение малолетних
                                    и за пропаганду гомосексуализма

                                    за эти две статьи тебя и посадят, говно
                                    Ответить
                              • Какой багор )))
                                Ответить
                            • Скажу по-секрету, пидоры окружают тебя. Ты каждый день здороваешься с ними за руку, общаешься и пьешь с ними пиво. И чем сильнее твоя неприязнь к ним, тем меньше твои шансы понять, кто есть кто.

                              надеюсь, после моих слов ты крепко задумаешься.
                              Ответить
                              • у меня нет неприязни к геям

                                только к пидарам гнойным вроде тебя
                                Ответить
                                • не бывает "не гнойных" пидоров. Ты ещё и жертва стереотипов...
                                  Ответить
                                  • конкретно ты просто гниль
                                    Ответить
                                    • мне очень нравится, что некоторых людэй можно довести до каления парочкой предложений; какой резонанс, прости, господи!.. Особенно хорошо, что среди них - ты. Кстати, в "эффект бабочки" веришь?
                                      Ответить
                                      • Иди под струю, мойся, блядь! Начальник, бля! Начальник! Этот пидорас обосрался, блядь! Начальник! Иди под струю, блядь, чтоб сейчас пришли — ты чистый был, нахуй! Ты понял, бляяя?! Чтобы чистый был, сука! Обосрался, пидорас, а! Начальник, блядь, он обосрался! Идите мойте его, нахуй, я с ним здесь сидеть не буду, блядь!
                                        Ответить
                                        • http://pycharm.dev -> Vim
                                          http://vim.dev -> Emacs
                                          http://emacs.dev -> Vim
                                          Ответить
                                          • это твои?
                                            Ответить
                                            • Дождавшись прибытия союзников, Филипп двинулся маршем в Беотию с 30 тысячами пехоты и более 2 тысяч конницы. Обе стороны рвались в бой, но Филипп имел больше солдат и лучших полководцев. На одном фланге он поставил командовать сына Александра и с ним лучших военачальников, а другой фланг возглавил сам, подразделения расставил по месту. У противника один фланг состоял из афинян, другой из беотийцев. Упорное сражение длилось долгое время без перевеса какой-либо стороны, многие погибли и надежда на победу воодушевляла обе стороны. Александр первым прорубился через строй врагов, повергнув многих. Такой же успех сопутствовал его товарищам, так что в сплошном фронте неприятеля зазияли бреши. Пришлось еще нагромоздить горы трупов, прежде чем Александр принудил неприятеля к бегству. Царь со своей стороны вначале затеял рискованное отступление, затем надавил на противника и заставил его побежать. Более тысячи афинян пали в сражении, не менее 2-х тысяч захвачено в плен. Также много погибло беотийцев, и немало их попало в плен
                                              Ответить
                                              • В целом, не кажется особенно своеобразным и способ его формирования (из любовных пар, давших присягу верности над могилой Иолая, возницы и друга Геракла). Гомосексуальные связи были частью традиции аристократических мужских сообществ и институционализированы во многих дорийских и эолийских (но не ионийских) государствах (Крит, Спарта). Афиней в «Пире мудрецов» (кн. 13) говорит:

                                                «Так спартанцы осуществляют жертвоподношения богу Эросу перед воинами, выстроенными для боя, потому как полагают, что их спасение и победа зависят от дружбы между мужчинами, стоящими в строю… И опять, так называемый Священный отряд в Фивах состоит из любовников и их избранников, проявляя таким образом величие бога Эроса в том, что бойцы отряда избрали погибель со славой перед невзрачной мизерной жизнью.»[1]
                                                Ответить
                                                • О том, что в Беотии гомосексуальные связи свободных мужчин практиковались открыто, свидетельствуют многие античные авторы, например, Платон в «Пире»[2]; Элиан отмечает, что со времён мифического царя Лая «привязанность к красавцам фиванцы стали считать благом»[3]. О том, что в Фивах мужчины имеют обычай ставить своих любовников рядом с собой в бою, упоминает и Сократ в «Пире» Ксенофонта. С другой стороны, мысль о том, что армия, составленная из любовников, была бы непобедима, поскольку возлюбленный устыдится струсить на глазах любящего, а любящий предпочтёт смерть оставлению возлюбленного на произвол судьбы — высказывается Федром в «Пире» Платона и, следовательно, не была чем-то необычным для IV в. до н. э. даже в более строгих к гомосексуальным связям Афинах.
                                                  Ответить
                                                  • ак, например, тот раненый воин, который, видя, что враг готов его добить, молил: „Рази в грудь, чтобы моему возлюбленному не пришлось краснеть, видя меня убитым ударом в спину“. Говорят, что Иолай, возлюбленный Геракла, помогал ему в трудах и битвах. Аристотель сообщает, что даже в его время влюблённые перед могилой Иолая приносили друг другу клятву в верности. Вполне возможно, что отряд получил наименование „священного“ по той же причине, по какой Платон зовёт любовника „боговдохновенным другом“.»
                                                    Ответить
                                                    • Существует рассказ, что вплоть до битвы при Херонее он (отряд) оставался непобедимым; когда же после битвы Филипп, осматривая трупы, оказался на том месте, где в полном вооружении, грудью встретив удары македонских копий, лежали все триста мужей, и на его вопрос ему ответили, что это отряд любовников и возлюбленных, он заплакал и промолвил: «Да погибнут злою смертью подозревающие их в том, что они были виновниками или соучастниками чего бы то ни было позорного».
                                                      Ответить
      • ебать...
        Ответить
    • унылое говнище какое

      как su.humor почитал за 1994 год
      Ответить
    • унылое говнище какое

      как su.humor почитал за 1994 год
      Ответить
    • Уже было в 24582.
      Ответить
      • Мне кажется, это было в «Симпсонах».
        Ответить
        • Я не знаю что такое "Симпсоны". Чтобы программировать на "PHP" никакие "Симпосны" не нужны. Я просто смотру "Теклепузики" и теку.
          Ответить
          • Солнце за горой садится,
            Телепузик спать ложится!
            Ответить
            • За холмами, за лесами
              Тонет лодка с мусорами.
              Мусора кричат: «спасите!»
              А телепузики им: «пузи-хуй сосите!»
              Ответить
              • Шум и гам в этом логове жутком,
                Но всю ночь напролёт до зари
                Я читаю стихи пузи-губке
                И с Тинки-Винки жарю пузи-пироги.
                Ответить
                • Всё! Пиздец! Решено! Без возврата
                  Я покинул родные поля.
                  Уж не будут листвой крылатой
                  Надо мной пузи-тополя.

                  Пылесос мой давно скукожился,
                  Пузи-тостер давно издох.
                  На телепузиковых изогнутых улицах
                  Умереть, знать, сулил мне Бог.
                  Ответить
          • Мои друзья смотрят «Футы-Раму» и каких-то «Гриффиндоров». Дураки, что с них взять. Лучше я «Улицу Салям» ещё раз пересмотрю.
            Ответить
            • А я лижу на деване и смотрю "Котлопёз", "Вовка Гоп, квадранты и шары", "Эй, Арахнольд!" все одновремена. Под моим носам надуваеса огромный пузырь из саплей, он лопается и сопли стикают в пачку с чипсами на моём жырнам пузи, потом я рукой, которой только что ковырял в жопи, беру горсть чипсав и набиваю сибе полный рот. В моей комнате стоит жуткий смрад из-за разлагающегося трупа соседа, который джва месица нозат паскальзнулся в луже слюней рядом со мной и разбил голову об череп моего отса, а мне лень всьо это уберать.
              Ответить
              • Иди под струю, мойся, блядь! Начальник, бля! Начальник! Этот пидорас обосрался, блядь! Начальник! Иди под струю, блядь, чтоб сейчас пришли — ты чистый был, нахуй! Ты понял, бляяя?! Чтобы чистый был, сука! Обосрался, пидорас, а! Начальник, блядь, он обосрался! Идите мойте его, нахуй, я с ним здесь сидеть не буду, блядь!
                Ответить
            • Такие же унылые пидорги, как и ты?
              Ответить
    • Копипаста
      Ответить

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