Куча говна / Говнокод #26654 Ссылка на оригинал

-1

  1. 1
IT Оффтоп #46

#14: https://govnokod.ru/25684 https://govnokod.xyz/_25684
#15: https://govnokod.ru/25694 https://govnokod.xyz/_25694
#16: https://govnokod.ru/25725 https://govnokod.xyz/_25725
#17: https://govnokod.ru/25731 https://govnokod.xyz/_25731
#18: https://govnokod.ru/25762 https://govnokod.xyz/_25762
#19: https://govnokod.ru/25767 https://govnokod.xyz/_25767
#20: https://govnokod.ru/25776 https://govnokod.xyz/_25776
#21: https://govnokod.ru/25798 https://govnokod.xyz/_25798
#22: https://govnokod.ru/25811 https://govnokod.xyz/_25811
#23: https://govnokod.ru/25863 https://govnokod.xyz/_25863
#24: https://govnokod.ru/25941 https://govnokod.xyz/_25941
#25: https://govnokod.ru/26026 https://govnokod.xyz/_26026
#26: https://govnokod.ru/26050 https://govnokod.xyz/_26050
#27: https://govnokod.ru/26340 https://govnokod.xyz/_26340
#28: https://govnokod.ru/26372 https://govnokod.xyz/_26372
#29: https://govnokod.ru/26385 https://govnokod.xyz/_26385
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
#34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
#35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
#36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
#37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
#38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
#39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
#40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
#41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
#42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
#43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
#44: https://govnokod.ru/26627 https://govnokod.xyz/_26627
#45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
#46: https://govnokod.ru/26646 https://govnokod.xyz/_26646

Запостил: gost gost, (Updated )

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

  • Нахуя вообще сделали разделение на /bin и /sbin?..

    PS, перекатывайтесь из прошлого оффтопа, ГК уже в эксцепшон падает.
    Ответить
    • Чтобы обычному юзеру не показывать проги, которые он всё равно не сможет поюзать.
      Ответить
      • В том-то и проблема что сможет. Только лимитированно.
        ifconfig
        Ответить
        • Эм, реально? Я его из под юзера никогда не запускал даже 🙂
          Ответить
          • Кстати, в свежем дистре у меня нет ifconfig.
            WTF?

            Ну вот например /sbin/iftop
            Выдаёт интерфейс и мак-адрес, затем пишет:
            wlan0: You don't have permission to capture on that device (socket: Operation not permitted)
            Ответить
            • The ifconfig command has been deprecated and thus missing by default on Debian Linux, starting from Debian stretch.
              # ifconfig -bash: ifconfig: command not found

              Блин, вот это я отстал от жизни.
              Ответить
              • Да он уже лет 20 как депрекейтед так то... С тех пор, как прыщи в 2 адреса на интерфейсе научились.
                Ответить
    • >Нахуя вообще сделали разделение на /bin и /sbin?..
      Байка гласит что у Томпсона с Ритчи просто флоппики были по мегабайту.
      Все утилиты не влезали на один, вот они и монтировали их по разным путям.
      /bin
      /sbin
      /usr/bin
      /usr/local/bin
      Ответить
        • /lib32
          /lib64
          /libx32
          /usr/lib32
          /usr/libx32
          /usr/lib/x86_64-linux-gnu
          /usr/lib/i386-linux-gnu
          /usr/libexec
          Ответить
          • C:\Program Files
            C:\Program Files (x64)
            C:\Windows\System
            C:\Windows\System32
            C:\Windows\SysWOW64

            >/usr/lib/x86_64-linux-gnu
            >/usr/lib/i386-linux-gnu
            Всё таки в Линуксе ещё «всё просто и понятно»
            В винде в System32 ложатся 64-битные, а в SysWOW64 32-битные.
            Ответить
            • Бля, ещё и /lib/x86_64-linux-gnu и /lib/i386-linux-gnu. Они там монетку додекаэдр подкидывают перед тем как либы раскладывать?
              Ответить
              • Поттеринг в своё время ещё /run придумал.

                The /run directory is the companion directory to /var/run. Like for example /bin is the companion of /usr/bin.

                That means that daemons like systemd and udev, which are started very early in the boot process - and perhaps before /var/run is available (i.e. mounted) - have with /run a standardized file system location available where they can store runtime information.


                То есть на кой чёрт было их мерджить, если придумали в корне ещё один путь.
                Ответить
                • Лол, т.е. поттеринг добавлял /run чтобы работать без /usr, но при этом один хуй загрузка без /usr не работала? 🙂
                  Ответить
                  • Да ))) Жаль ссылку на его блог сходу не найду.

                    https://lwn.net/Articles/436012/

                    From: Lennart Poettering <mzerqung-AT-0pointer.de>
                    To: Fedora Development ML <devel-AT-lists.fedoraproject.org>
                    Subject: What's this /run directory doing on my system and where does it come from?
                    Date: Wed, 30 Mar 2011 13:54:30 +0200
                    Message-ID: <20110330115430.GA3115@tango.0pointer.de >
                    Archive-link: Article

                    Heya,

                    I just uploaded a new version of systemd into F15, which establishes a
                    directory /run in the root directory. Most likely you'll sooner or later
                    stumble over it, so here's an explanation what this is and why this is.

                    It's a fairly minor technical change, though presumably people consider
                    this a bigger political change, so I guess this deserves an
                    explanation:

                    For quite a while programs involved with early boot used to place
                    runtime data in /dev under numerous hidden dot directories. /dev/.udev
                    was the first one, but over time this grew to at least /dev/.mdadm,
                    /dev/.systemd, /dev/.mount, dracut, initscripts and more tools. (Other
                    distros have even more) The reason they used directories there is that
                    /dev was known to be a tmpfs and available from the first instant the
                    machine was booted. /var/run otoh is only available very late at
                    boot, since /var might reside on a separate file system.
                    Ответить
                  • So, what is implemented in F15 precisely?
                    
                    /run is now a tmpfs, and /var/run is bind mounted to it. /var/lock is
                    bind mounted to /run/lock. Applications can use /run the same way as
                    /var/run. Since the latter is FHS/LSB most apps should just use the
                    latter, only early boot stuff should use /run, for now. The folks who
                    have packages where this applies already have been informed. If you
                    haven't heard from any of us, then this doesn't apply to you.
                    
                    So, what's the benefit of this again?
                    
                    - There's only one tmpfs used, backing /run, /var/lock and /var/run,
                      reducing a bit the ever increasing amount of tmpfs' used on a default
                      system.
                    
                    - All runtime data at the same place. systemd's, udev's, dracut's data
                      are all beneath /run and /var/run now. Easily discoverable to the
                      admin. For the first time you can see the data all these important
                      tools used on your system store just like any other by doing "ls
                      /var/run".
                    
                    - Nothing is hidden anymore. The admin can see everything beneath
                      /var/run and /run, no hidden dot-files anymore.
                    
                    - We have standardized the early-runtime-dir solution across all major
                      distributions
                    
                    - The people involved feel much better since they don't have to misuse
                      /dev anymore
                    Ответить
                    • Не ну норм предложение же - убрать кучу темпового говна из /dev и /var и собрать его в одном каталоге.
                      Ответить
                      • Не знаю, мне кажется они вечно решают какие-то выдуманные проблемы.
                        Мне как-то похер где оно будет лежать.

                        А вот то что в 2к20 в Исках невозможно получить аппаратное ускорение декодинга видео в браузере — всем насрать.

                        Зато нужно нагородить поверх работающей альсы 10 абстракций для миксования аудио, перетасовать каталоги, обосрать Столлмана и Айка за какие-то высказывания и включать м-м-максимальный SJW.
                        Ответить
                        • > аппаратное ускорение декодинга видео в браузере

                          Дык тут браузеры отчасти виноваты. Загнали всё в бесправную песочницу, вот и нет ускорения. Очередной конфликт пирфоманса и безопасности.
                          Ответить
                          • При том что в Гiгeтох что Снгоме рендеринг webgl и остального на гпу.
                            chrome://gpu/
                            Graphics Feature Status
                            Canvas: Hardware accelerated
                            Flash: Hardware accelerated
                            Flash Stage3D: Hardware accelerated
                            Flash Stage3D Baseline profile: Hardware accelerated
                            Compositing: Hardware accelerated
                            Multiple Raster Threads: Enabled
                            Out-of-process Rasterization: Disabled
                            OpenGL: Enabled
                            Hardware Protected Video Decode: Hardware accelerated
                            Rasterization: Hardware accelerated
                            Skia Renderer: Enabled
                            Video Decode: Disabled
                            Vulkan: Disabled
                            WebGL: Hardware accelerated
                            WebGL2: Hardware accelerated


                            Ванильный инсталл
                            Ответить
                          • >Очередной конфликт пирфоманса и безопасности
                            Нет. Неправда. Сейчас очень много мест от css до канваса рендерятся нативно.

                            Там больше проблем с глючными дровами.
                            Их очень долго чинили, сейчас ситуация более-менее.
                            В браузерах обычно есть блек-лист хуёвых карт/драйверов. Которые можно отключить.

                            А в Гiгeтох до последнего момента В ПРИНИЦПЕ нельзя было включить аппаратный декодинг видео в Линуксе. (В Винде работает из коробки)
                            Нет ни флага, ни ключа, ни настройки
                            При том что аппаратное ускорение рендеринга и композитинга включено годами и по дефолту.
                            Ответить
                            • Прыщеговно соснуло на прыщах, кого это ебет? Пользуйтесь нормальными осями.
                              Ответить
                              • >Прыщеговно соснуло на прыщах

                                Да, но Щозiлла позицинируется как опен-сурсная контора.
                                Вместе с этим поддержка основой опен-сорс плаформы Луникса херится, баги висят десятилетиями.
                                При том что изобретать-то ничего не нужно: давно существуют аналогичные DXVA врапперы libva и vdpau.
                                А сами привязки декодеров прикручены в ffmpeg, и так используемом Гiгeтохом.
                                Ответить
    • от 500 постов? КАкой анскилл. Там кэша нету?
      Ответить
      • От 500 по-моему только браузер у мобильщиков помирал. Сам движок ГК где-то раза в 4 тащит, емнип.

        З.Ы. Я когда-то сток NGK на несколько лет назад скроллил, и браузер это нормально обрабатывал.
        Ответить
          • Ну х.з., комментов за годы то не мало насрано. А старые ноды не удалялись при скроллинге, только новые снизу добавлялись.
            Ответить
            • А, ну я так и подумал, что браузер рендерит всё вместе.
              На мобайле просто не так.
              Ответить
    • в слаке /sbin нет в пасе у обычных питухов
      жутко бесит, кстати

      Воооюще единственный номальный лейаут, который я видел, был в Самой Лучшей ОС.

      Базовая система шла в /bin и /etc/
      Поставленные сердпарти питухи -- в /usr

      Но прыщи никогда в такую красоту так и не смогли, к сожалению
      Ответить
  • Ты проебался, это 47й был.
    Ответить
  • Деанон!
    У Пи имя Георгий.
    Ответить
    • Я выбрала команду workplace, в ней я занималась web-разработкой, разными новыми фичами workplace на PHP и React.


      дальше не читал
      Ответить
      • Но она в «Facebook» в «Лондоне», «Сениор».
        А ты нет.
        Ответить
        • В «Лондоне» смертность от «короны» больше, чем в любом российском городе.
          Ответить
        • Есть такая компания Фейсбук, да. Они неделю назад выкатили новый iOS SDK, который просто падал и вместе с собой уносил приложение. Crashlytics настолько охуели от количества прилетавших репортов, что снизили обработку на 50% :)))

          А компания Гугел обновила приложение камеры для своих телефонов и тепер оно крашится при старте почти у всех счастливчиков, которые откладывали с обедов на Пиксель.

          А фирма Эппл написала такой классный системный логгер, что он при попытке сформировать строку в классическом принтефном виде падает с bad access и тоже уносит всё приложение. Потому что ошибка это навсегда.

          Уверен, что компания Майкрософт тоже что-нибудь учудила за последний месяц, например, выкатила необновляемое и неудаляемое обновление.
          Ответить
          • К чему это? Библишко там нормально платят?
            Ответить
            • К тому, что набрали таких вот реактивных писюх.

              А нас и здесь неплохо кормят.
              Ответить
            • Баблишко нормально платят когда ты Цукенбрин.
              Когда ты Brendan Gregg тоже хорошо

              А когда ты седьмая вода на киселе, то оно там не сильно отличается от другой хорошей компании
              Ответить
              • Разумеется, работать в одном месте, а жить и тратить в другом не получится. Но если куда-то путешествовать, то это существенная разница.
                Ответить
                • У мимиграции есть много минусов, надо их всех взвесить. Работать в годной компании в Питере или Москве не всегда хуже, чем в долине.

                  Сейчас не 1993-й год, когда россиянские программисты валили в штаты, потому что у них там компьютер рабочий был дороже, чем их зарплата за год в НИИ "россельмаш"
                  Ответить
                  • Да я вот даже в москву пока не хочу мигрировать. Минусов там дофига, да и тут норм хиккуется. Хотя в европку на выходных кататься прикольно было бы, конечно.
                    Ответить
                      • 1) Ебучий муравейник.
                        2) Жить только на съёмных хатах, иначе пол жизни пройдёт в ебучем транспорте.
                        3) Ебучая слякоть на дорогах (у нас тупо лёд, лол).
                        Ответить
                    • У вас там в нске тоже широко представлены годные компании, кстати. Но да: из заграницы вам доступен только Казахстан:)

                      У меня знакомые понаехали в штаты и европы ради конкретнрых компаний.
                      Вот хочешь ты работать в твиттере? Добро прожаловать в америку. Но это не ради денег, а потому что ты течеш именно от твиттера
                      Ответить
                      • > хочешь ты работать в твиттере

                        Да нахуй он мне нужен, я там даже не зареган...
                        Ответить
                        • Я тоже
                          Вот тогда тебе в америках делать-то и нечего

                          У нас тоже есть офис в Новосибе кстати, но самое низкоуровневое у нас это наверное умение это в кресты, профилирование нативного кода, и может еще контрибьют в jdk, так что тебе, вероятно, было бы не интересно
                          Ответить
                          • > контрибьют в jdk

                            Не ну jit'а попилить прикольно конечно было бы. Или там что-то более прозаичное?
                            Ответить
                            • В основном там пытаются улучшить 2D, которое в джаве оче хуевое. Например, на маке оно юзает OpenGL, а должно бы вот эту штуку юзать
                              https://developer.apple.com/metal/

                              Разговоры про оптимизацию джыта я тоже слышал, но насколько они близки к реальности -- я не знаю.

                              Можешь дать мыло если хо, я скину ссылок с подробными описаниями.
                              Ответить
                      • Какие причины течь от твиттера? Это компания, знаменитая своими технологиями?
                        Ответить
                        • Есть люди, которые текут от количества пользователей, например. Это тешит их тщеславие. Им приятно работать в конторе, которая упоминается в голливудских фильмах, и знать, что именно их код там показывают.

                          Ну и в целом там довольно серьезный хайлоад: он позволяет попробовать всякие интересные штуки на бекенде.

                          Допустим, тебе интересно решить задачу быстрой отдачи контента ста сорока восьми миллионам пользователей одновременно. В обычной конторе это трудно сделать.
                          Ответить
                          • Это больше похоже на задачи рахитектора и девопсов, как раскидать нагрузку.

                            Ну и так-то там это уже всё написано. Я не думаю, что они ежемесячно перетрахивают core functions
                            Ответить
                            • Рядовые программисты тоже должны писать код учитывая вот это всё. Для сайта по продаже хомячков я могу взять SQL и ORM. Очевидно, что твиттер это сделать не может.

                              Даже если это всё придумал Архитектор, сотрудники всё равно будут лучше понимать хайлоад, чем рядовая веб-макака.

                              Я так понимаю, что с пунктами про тщеславие ты согласен?
                              Ответить
                              • > Очевидно, что твиттер это сделать не может.
                                - вообще они с RoR начинали емнип.

                                Про тщеславие согласен, но это проходит с возрастом.
                                Ответить
                                • начинали да, потому что ими пользовались три калеки
                                  А теперь там scala (емпнип). Хайлоад на скале на дороге не валяется, нет?

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

                                  Миллионы хомячков решили, что руби тормозит. Хотя их нагрузка равна примерно 0.001% от твиттера, и руби там явно не бутылочное горлышко
                                  Ответить
                                  • И куда потом с этим багажом идти работать? В очередного «убийцу» Твиттера?))

                                    Пхп-мартышка в итоге намного более востребована.
                                    Ответить
                                    • Может и в убийцу или в другой хайлоад.
                                      Думаю что фейсбуки условные тоже ценят умение в хайлоад, не?
                                      Ответить
                                      • И в скалу, да?

                                        Очень всё специфично.

                                        А проёбывают они точно так же со скалами, как делали это с рубями, я выше примеры привёл.
                                        Ответить
                                        • Те, которым важна именно скала, могут вечно твиттерить.
                                          Впрочем, в фейсбуке есть другие функциональные языки. Например, у них есть OCaml. Кажется что опыт в хайлоаде плюс опыт в фунциональщине -- хороший для них опыт.

                                          А что за примеры?
                                          Ответить
                                          • > Те, которым важна именно скала, могут вечно твиттерить
                                            - там вроде в среднем люди по 2-3 года работают, не более. Интересно, почему?
                                            Ответить
                                            • уходят делать своего убивца твиттера7

                                              Я не знаю, на самом деле. Я не работаю в тви, и не собираюсь. Мне нравится работать над интеересной питушней, и похуй где

                                              Но я ретранслирую слова моих знакомых из крупных компаний

                                              1) их прет хайлоад
                                              2) их прет, что их софтом пользуются миллионы
                                              Ответить
      • Чтобы ответить на мой вопрос, читать ничего не нужно.
        Ответить
        • ну да, но молодые тян обычно все милые, кроме совсем уж
          Ответить
          • А обезьяны в пределах вида вообще все на одно лицо.
            Ответить
          • Но на видео она какая-то потолстевшая.
            Ответить
            • Вот до чего "php" и "react" доводят.

              Хотя чувак, который движок для perl6 на хаскеле пилил, вообще пол сменил в итоге...
              Ответить
                • А для мышечной массы что посоветуете?
                  Ответить
                  • гейнеры.

                    Но лучше все таки силовые и памповые упражнения (лучше со свободными весами) и белок обязательно

                    С утра пей сывороточный
                    Перед сном -- казеин
                    Ешь творог и куриную грудку

                    Качай мышц три раза в неделю
                    День ноги
                    День грудь
                    День руки
                    Спину же и пресс раскидай на остальные дни
                    Ответить
                    • Примерно это и делаю.
                      Но я имел в виду что-то типа «PHP» может?
                      Ответить
                      • Посоветую стать опотным пользователем текстового редактора "лексикон".

                        Работы у тебя не будет, и придется подрабатывать курьеом. Так и накачаешься
                        Ответить
                    • Пиздец. Месяц не могу сдвинуться с мертвой точки, до этого хорошо шло. Чзх?

                      Жру как медведь.
                      Ответить
                      • проверься на глисты.

                        Уменьши кардио (бег и пр, от него мышца горит), увеличь силовые, увеличишь белок и углеводы, гейнеры и добавь креатин: он задерживает влагу в мышцах.

                        Но лучше конечно обратиться к тренеру.
                        Ответить
                        • Ладно, похуй.
                          Бег и так не делал. Гейнер правда перестал жрать, т.к. переехал домой, а новый покупать было лень.
                          К тренеру только после пиздеца смогу вернуться.
                          Ответить
              • Это не реакт, это эффект +1

                Точно такая же хуйня есть в гугле и джберйнс, например
                Там дают халявные булочки, и многие сотрудники наращивают себе жопу.

                Правда современная молодь уже вся сплошь помешана на спорте, так что проблема стоит меньше, чем 15 лет наза
                Ответить
                • В гугле даже пиво в столовой есть.
                  А столовая у них бесплатная.
                  Ответить
                  • ну а где пиво, там и орешек захотелось
                    а где пиво с орешками -- там жопа)

                    AFAIK, в Яндексе дают спец деньги на карту, а в жетбройнс тоже бесплатная
                    Ответить
                    • В Яндексе да, дают N денег, которые можно потратить в месяц.
                      В мэйле дают хуй с маслом, но у них есть ахуенный тренажёрный зал.
                      Ответить
      • Вы решили всех айти тян перечислить? Их овердохуя ващето
        Ответить
          • Мне странно, что ты в своей компании их не видишь. AFAIK, в питреском офисе они вполне себе есть. И у нас тоже их есть.

            Может, твоя проблема в том, что ты пишешь на С++? Писал бы на фронтенде, было бы куда больше тян вокруг
            Ответить
            • Нет, проблема в другом. И тогда уже скорее машинлернерши, а не фронтендерши.
              Ответить
              • А, понял, твоя проблема в том, что ты плохо делаешь нейронки?:)

                Или в чем?
                Ответить
                • Почему я не пытаюсь искать тян с работы? Не знаю как это делается. Просто рандомно подкатывать? Не лучше ли тогда просто на улице? Так хоть она тебя первый и последний раз нахуй пошлёт. С теми, с которыми хоть как-то пересекаюсь по работе, их полторы штуки, да и те, которые мне не сильно нравятся. Правда нам недавно дали новый проект, и туда взяли новую тян, можно будет попробовать, если будет необходимость.
                  Ответить
                  • > тян с работы

                    Лучше не надо. Это всё круто, конечно какое-то время. Но потом личные проблемы превращаются в факапы на работе и наоборот.
                    Ответить
                    • У нас большая контора, и там правда есть тянки, на порядок меньше, чем кунов, но есть. Гость предлагает брать одну из них. Не обязательно вместе работать.
                      Ответить
                    • Да, разойтись с тян и работать в одном отделе это наверное адочек.
                      Но это уже проблемы следующего уровня, кмк: вопрошающему нужно впринципе начать жить с тян и ебаца c ней, остальное пока не существенно
                      Ответить
                        • Поясню. Вопрошающих убеждён, что отсутствие всего остального тян сможет компенсировать, и оно перестанет быть нужно.
                          Ответить
                          • Ценнее всего кажется нам то, чего у нас нет:)

                            Однако же вопрос с тян действительно лучше решить: возраст между 20 и 30 это тот возраст, когда надо бухать, тусить, просыпаться в неизвестных квартирах по утру, влюбляться сразу в троих девушек (причем в двух не безответно), и не помнить, что было вчера.
                            Ответить
                            • > Ценнее всего кажется нам то, чего у нас нет:)
                              Это правда.
                              Ответить
                            • После 30 бухать уже будет проблематично.
                              Ответить
                              • ну во всяком случае не так много
                                Ответить
                                    • Мне сосед-рабочий (на русский хз как перевести) подарил пробный ящик пива, говорит, работал где-то на пивзаводе, ему подарили, а он не пьет. Спарцмен. Я аж охуел. Я как-то зашел в подвал, никого нет - а пивом пахнет как будто ящик разбили. Вот это наши, сразу видно!
                                      Ответить
                                      • Сёме все время что-то дарят. Наверное Сёма вызывает у людей симпатию.
                                        Ответить
                                        • Я тоже дарил. Соседям отнес борщ, который бы не успел съесть, типа хотите попробовать что-то русское.
                                          Ответить
                  • Работа тут не причем кмк: челы, которые умеют в тян, одинаково хорошо клеят их в столовой на работе, на танцполе в клубе, и в купе поезда Улан-Удэ -- Григориополь.

                    Я не супер-спец, но afaik фишка в том, что не надо каждую тян сразу рассматривать с точки зрения "пошлет / не пошлет".

                    Нужно просто научиться общаться с тян. Болтать в столовой. Ходить вместе в выходные в парк кататься на роликах. Пиздеть с ними по мессенджеру за жизнь. Ходить в бар пить пиво.

                    При этом не надо сразу предлагать ей всякое. Надо просто общаться.

                    В какой-то момент у тебя будет N знакомых тян. Это, во-первых, даст тебе опыт общения с тян. Ну там чтобы не обсираться пунцовой краской, не говорить хуйни, и может быть даже искорметно острить (тян обычно такое любят).

                    Во-вторых это даст уверенность. Если вокруг много тян, и они к тебе благосклонны (даже чисто по дружески), то это улучшает самооценку. Чтобы тян были благосклонны, надо не предлагать им сразу всякое.

                    В-третьих, среди них может найтись та единственная (может быть единственная на этот месяц, так тоже бывает, но это тоже не плохо).

                    В общем это как с программированием: если сразу думать "я хочу работать в гугл и писать прыщеядро для андроид", то можно всю жизнь мечтать.

                    А если начать работать хоть где-то, тупо чтобы набивать руку в кодинге, то можно прокачаться.
                    Ответить
                    • Ебать ты кэп. Конечно, если бы у меня было овердохуя знакомых, я умел бы пиздеть за жизнь, то вопрос бы не поднимался. Ну, может, лет к 35 я научусь делать то, что ты написал, у меня будет десяток знакомых тян, и может быть, среди них будет та единственная. А так у меня даже знакомых кунов нет, с кем можно было регулярно куда-то пойти. Но проблему нужно решить сейчас.
                      Ответить
                      • Ну вот я и предлагаю тебе начать с простого общения.
                        Ты пишешь:
                        "Так хоть она тебя первый и последний раз нахуй пошлёт."

                        Это говорит о том, что ты сразу от нее чего-то хочешь. Если бы не хотел -- у нее не было бы повода куда-то тебя посылать, не?

                        У нас в отделе (и в соседнем отделе, который от нас откололся) есть стайка молодняка. Они вместе ездят кататься на лыжах, например. И чаи вместе пьют на кухне. И даже на карантие в слаке сделали канал, и там тоже пьют чаи.
                        Примерно половина из них тян в районе до тридцати. Пока что они просто дружат (наскока мне известно), но в какой-то момент там точно образуются пары, я уверен. У вас таких компаний нет?

                        В интернетиках есть говнопсихологиня под ником "эволюция".
                        Психологини это конечно унылое говно обычно, но именно эта, вроде бы, специализируется на "как перестать быть задротом, и с кем-нить познакомица". Можешь интересна ради попробовтаь почитать её мануалы, но это не точно.
                        Ответить
                        • Я бы с радостью пристроится к такой группе просто дружить и ездить кататься на лыжах.
                          Ответить
                          • Еслиб ты работал у нас, то ты бы с ними познакомился.)

                            Ладно, допустим в жопу работу. Есть Интернетик. Есть чаты, есть всякие группы в ВК, там разве нету жизни?

                            В молодости я тусил в чатах (тогда это было популярно: чат ток ру в хорошие годы имел пару тыщ человек, разделенных на сто комнат). Внезпно, я там даже с кем-то знакомился.
                            Ответить
                            • Я нашёл способ как знакомиться. Ветка изначально про знакомства на работе.
                              Ответить
                              • Ветка вроде как была про какую-то тян из фейсбука, не?
                                Ответить
                                • Ветка была про просто пиздец IT оффтоп (ненужное вычеркнуть).
                                  Ответить
                              • > В течение четырёх недель ты получаешь задания на общение и саморазвитие
                                Надо будет делать фотки с царапинами на запястье?
                                Ответить
                                    • >> серфа, сноуборда, сноукайта, вэйкборда, вэйксерфа, питбайков

                                      Это на каком языке он сейчас написа́л?

                                      Кстати, у нас в одном парке появились странные развлечения:
                                      http://www.izmailovsky-park.ru/42-sport/266-ajsshtok

                                      В Центральной части Парка расположилась уникальная мультиплощадка, на которой собраны самые необычные всесезонные развлечения! Здесь Вы можете поиграть в такие игры, как «Айсшток», «Шаффлборд», «Жульбак», «Новус», «Корнхол».

                                      Почитал, что это такое... А ведь я когда-то над кёрлингом ржал.
                                      Ответить
                                      • Есть реальный челленлдж прокачаться в хайлоаде. Тимлид имеет четкий продуктвижн, реально чуствует деманд маркета. Го?
                                        Ответить
                                    • Сникерсни (англ. snickersnee) — историческое название ножевого боя, своеобразной народной дуэли на ножах в Нидерландах и Британии XVI—XIX веков.

                                      Чем не активность?
                                      Ответить
                    • Короче коуч из тебя хуёвый, и так я точно никого не найду.
                      Ответить
                    • > опыт общения с тянами

                      Лол, да тут главное осознать, что они не инопланетяны, а такие же люди как и ты.

                      Как минимум за музыку да новости с ними всегда можно попиздеть. А с некоторыми даже погамать можно.
                      Ответить
  • Есть какая-то нормальная книжка по современному асму? Чтобы можно было сразу начать программировать без хуйни всякой.
    Ответить
    • 1. Техническая документация по процессору.
      2. Хелп по самому асму (у разных реализаций синтаксис немного разный).
      Ответить
      • Ты рофлишь? Я же просил без хуйни. Нужен туториал для тупых, а не документация.
        Ответить
        • Если ты знаешь хоть какой-нибудь императивный ЯП (хоть «Бейсик» на школьном уровне), ассемблер ты осилишь.

          Сложность там не столько в языке, сколько в особенностях железа.
          Ответить
            • push RBP
              ложит в стек значение рбп

              mov RBP,RSP
              ложит в рвп значение из рсп

              mov EDI,013h
              ложит в еди 013h

              Чо тут понима?
              Ответить
              • > ложит в стек значение рбп
                А нахуя?

                > ложит в рвп значение из рсп
                А нахуя?

                > ложит в еди 013h
                А нахуя?
                Ответить
                • чтоб потом передать эти значения в функцию writeln, которую вызвали командой call
                  Ответить
                  • Ну вообще-то функции writeln нужно только число в регистре EDI.

                    Остальное — это подготовка так называемого «stack frame». Зачем это нужно, можно понять, если знать историю. Если кратко, то «stack frame» нужно, чтобы удобнее было ссылаться на локальные переменные функции и на аргументы, которые передаются через стек, а не через регистры.
                    Ответить
                • RBP это base pointer, а RSP это указатель на стек.

                  думаю, ответ на первые нахуя это чтобы стек потом можно было раскрутить (См base pointer omission).

                  EDI в данном случае видимо используется для передачи аргумента в вызываемую функцию. Что это за конвенция мне не известно, может внутенняя конвенция D.

                  13h это 19, думаю тебе это ясно

                  Я не трогал асем десятки лет, мог и напиздеть.
                  гуру, помогайте
                  Ответить
                  • То есть насрав в стек, я должен обратно за собой убрать? Чтобы нужно было следить за укозателем на стек - впервые слышу.
                    Ответить
                    • Перед завершением функции ты должен вернуть указатель на вершину стека (SP/ESP/RSP) в исходное состояние, иначе инструкция RET не сможет найти адрес возврата.
                      Ответить
                  • > что это за конвенция

                    Прыщеаби под x64, походу. Только там RDI первым аргументом идёт.
                    Ответить
                    • тогда почаму EDI а не RDI?
                      матапушта мелкае значение?
                      Ответить
                      • Ага, число мелкое и при записи через EDI старшие биты RDI один хер зануляются.
                        Ответить
                        • А можно DI? или такого покемона в x64 нету?
                          Ответить
                            • постой
                              мув в EDI чиcтит, а в DI не чистит? Как AH/AL чтоли?
                              Вот блин
                              Ответить
                                • лол, никогда об этом не думал

                                  зато в моем децтве можно было быстро-бысто нажимать на кнопку trubo.

                                  И читать слово LOHI -- лохи
                                  ахахахах
                                  Ответить
                                  • В моём детстве на калькуляторе набирали «407», и переворачивали дисплей.
                                    Ответить
            • Чтобы понять нужна "хуйня". В этом случае наверное даже только первой "хуйни" хватит.

              "Хуйню", кстати, читать полностью совсем не обязьянательно, ищещ инфу к соответствующей команде и относящейся к ней питушне.
              Ответить
              • Так себе совет, если честно

                Если питух не знает, что такое регистрр или сегмент кода, то искать какие-то там комманды не очень полезно

                Это, всёж не пхп учить
                Ответить
                • Я ж сказал, "и относящейся к ней питушне", например хочет он знать, что есть "push", по пути узнаёт что такое стек, регистр, байт (сомневаюсь что тут есь кто-то не знающий всего этого) и пр. Так он узнает только необходимый для понимания кодеса минимум "хуйни".

                  ЗЫ. "смегменты" нинужны
                  Ответить
                  • Сегменты в 2020-м году не нужны прикладному программисту.

                    Про «thread information block» в «Винде», на который в 64-битной системе ссылается регистр GS, а в 32-битной — регистр FS, напомнить?
                    Ответить
                    • >Сегменты в 2020-м году не нужны прикладному программисту.

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

              1. С синтаксисом просто: одна строчка — одно действие.
              Опциональная метка, мнемоника операции, аргументы через запятую, опциональные комментарии.
              mov RBP,RSP — здесь «mov» — это мнемоника операции; «RBP,RSP» — аргументы.

              2. С железом: у процессоров семейства x86 RBP, RSP, EDI — это регистры общего назначения. RSP особенный, он хранит указатель на вершину стека.
              push RBP — положить в стек значение регистра RBP, вершину стека подвинуть.
              mov RBP,RSP — положить в регистр RBP значение регистра RSP.
              mov EDI,013h — положить в регистр EDI число 013h.
              call <имя> — вызвать подпрограмму, расположенную по адресу <имя> (реальный адрес вместо <имя> подставит линкер или загрузчик программы).

              3. Интерфейс с другим софтом.
              Функция «@safe void std.stdio.writeln!(int).writeln(int)@PLT 32» принимает один аргумент — 32-битное число в регистре EDI. Именно ради этого была инструкция mov EDI,013h.

              Назначение конструкции PUSH RBP; MOV RBP, RSP можно узнать в так называемом «call convention».
              Ответить
              • Итак, по пункту №1 читаем хелп по ассемблеру, чтобы знать, как в нём записываются метки, аргументы инструкций, комментарии и т. п.

                По пункту №2 документация на процессор. Да, по «Интелу» будет много мути, особенно по защищённому режиму, нужно поискать какое-нибудь краткое описание инструкций. Что-нибудь типа такого:
                http://www.club155.ru/x86cmd/PUSH

                По пункту №3 — документация по операционкам (SDK), по языкам программирования (читать раздел про совместную линковку с модулями на других ЯП).

                Для обучения можно на каком-нибудь ЯП писать хеллоуворлды и смотреть, во что это компилируется. Например, у gcc ключ -S выдаёт ассемблерный листинг, а ключ -masm=intel выведет этот выхлоп в синтаксисе MASM/TASM вместо AT&T.

                После компиляции нескольких хеллоуворлдов ты поймёшь, как выглядят ветвления, циклы, вызовы функций, арифметические операции.
                Ответить
                • > выдаёт ассемблерный листинг

                  Да под дебаггером запусти и будет у тебя одновременно и сишный код и асм. Только оптимизацию лучше отключить на первое время, иначе от этой каши крыша с непривычки поедет.
                  Ответить
              • Самое интересное-то в функции calc, которая правда не вызывается.
                int onlineapp.calc(int):
                		push	RBP
                		mov	RBP,RSP
                		sub	RSP,010h
                		mov	-8[RBP],EDI
                		mov	dword ptr -010h[RBP],0
                		mov	dword ptr -0Ch[RBP],1
                L19:		mov	EAX,-010h[RBP]
                		cmp	EAX,-8[RBP]
                		jge	L34
                		mov	ECX,-0Ch[RBP]
                		add	ECX,3
                		mov	-0Ch[RBP],ECX
                		mov	EDX,-010h[RBP]
                		add	EDX,ECX
                		mov	-010h[RBP],EDX
                		jmp short	L19
                L34:		mov	EAX,-0Ch[RBP]
                		leave
                		ret
                		add	[RAX],AL
                		add	[RAX],AL
                Ответить
                • Вот тут, кстати, «stack frame» нужен, потому что создаются локальные переменные (под их место выделяет память инструкция sub RSP,010h).

                  Чтобы понять, как работают cmp и jge, придётся изучить флаги процессора.

                  А вот в самом конце add [RAX],AL — это мусор. Так дизассемблируются байты, равные нулю.
                  Ответить
                • Кстати, как объяснить чайнику про cmp? Рассказать, что эта инструкция вычитает из первого аргумента второй, а результат не запоминает, а только устанавливает флаги (флаг переноса, флаг нуля, флаг знака) или просто перечислить реальные примеры применения, что если после cmp сразу следует jge, то мы сравниваем первый аргумент со вторым на «меньше или равно»?
                  Ответить
                  • P.S. А ведь рано или поздно, когда «чайник» станет большим, первый вариант объяснения пригодится, иначе он не поймёт как работает такой код:
                    CMP RBX, 9000
                    SBB RAX,RAX

                    Понять, почему при вычитании RAX из RAX может получиться не ноль, можно только зная про флаги, про машинное представление числа, про переносы и заёмы при арифметических операциях.
                    Ответить
                    • Вообще лучше бы сразу изучить двоичное представление числа и флаги, и кажется что и Ирвин и Юров это делают достаточно рано. Причем Ирвин сразу учит пользоваться debug.com, и на флаги и значения регистов смотреть глазами, чтобы понимать.
                      Ответить
                  • Предлагаю совместить первый вореант с мнемониками: [u]http://faydoc.tripod.com/cpu/jge.htm[/i]. Большинство этих джампов хорошо запоминаются по стандартной схеме: Jump if [Not] Less/Greater/Equal [or Equal].
                    Ответить
                    • > хорошо запоминаются

                      Я до сих пор путаю above и greater, приходится подсматривать.
                      Ответить
                • Блин, мой моск отказывается читать эту дословщину. Включи оптимизацию, плиз.
                  Ответить
                  • Куик!
                     		push	RBP
                    		mov	RBP,RSP
                    		sub	RSP,010h
                    		mov	[pituh],EDI
                    		mov	dword ptr [kurochka],0
                    		mov	dword ptr [result],1
                    loopa:		mov	EAX,[kurochka]
                    		cmp	EAX,[pituh]
                    		jge	zaloopa
                    		mov	ECX,[result]
                    		add	ECX,3
                    		mov	[result],ECX
                    		mov	EDX,[kurochka]
                    		add	EDX,ECX
                    		mov	[kurochka],EDX
                    		jmp short	loopa
                    zaloopa:		mov	EAX,[result]
                    		leave
                    		ret
                    Ответить
                    • ; вообще я чего-то такого ожидал
                      ; а у тебя как была дословщина, так и осталась
                      
                              mov edx, 0
                              mov eax, 1
                      loopa:
                              cmp edx, edi
                              jge zaloopa
                              add eax, 3
                              add edx, eax
                              jmp loopa
                      zaloopa:
                              ret
                      Ответить
                      • add eax, 3
                        add edx, eax

                        Так понимаю, к edx нельзя прыбавиць константу?
                        Ответить
                          • Я уже и забыл, что мы решаем школьную информатику)))

                            Почему это не оптимизировать нахуй?
                            Там значение и K и S (и eax и edx) где-то используется после цикла?
                            Ответить
                            • Цикл останавливается по определённому значению s, а выводится k, поэтому считать нужно и s, и k.
                              Ответить
                      • С оптимизацией получается:
                        push	RBP
                        		mov	RBP,RSP
                        		xor	EDX,EDX
                        		mov	EAX,1
                        		test	EDI,EDI
                        		jle	L18
                        LF:		add	EAX,3
                        		add	EDX,EAX
                        		cmp	EDX,EDI
                        		jl	LF
                        L18:		pop	RBP
                        		ret
                        Ответить
                        • Ну вот, теперь норм читается. Годно компилит, даже цикл ужал. Там clang в качестве бекенда или что-то своё?
                          Ответить
                        • Странно, что функцию calc вообще не выкинул. Она ж в рантайме не нужна.
                          Ответить
                          • А конпеляторы и не выкидывают. Выкидывает обычно линкер. Только он видит всю картину и может понять, нужна ли реально эта функция. Поэтому в ассемблерных дампах обычно видно неиспользуемые функции. А в самом экзешнике её скорее всего не будет.
                            Ответить
                            • Линкер не может выкинуть отдельную функцию. Линкер может выкинуть отдельный объектный файл (*.o, *.obj). Линкер не знает, есть ли у тебя в коде джампы из одной функции в другую.

                              Выкинуть может как раз компилятор. Но чтобы он выкинул, ему нужно сообщить, что символ неэкспортируемый, что ты не будешь никому передавать указатель на эту функцию.
                              Ответить
                              • > Но чтобы он выкинул, ему нужно сообщить, что символ неэкспортируемый, что ты не будешь никому передавать указатель на эту функцию.
                                Подтверждаю: https://gcc.godbolt.org/z/Aq-M8Q.
                                Ответить
                                • А в «D» это не работает: он оставляет функции, помеченные «static».

                                  Какой багор )))
                                  Ответить
                              • > линкер не может выкинуть отдельную функцию

                                Может. Для этого у компиляторов есть опции в духе function-level linking. Да и вообще линкеры сейчас глобальной оптимизацией кода умеют заниматься, а не просто танчики клеить.
                                Ответить
                                • Погуглил. «function-level linking» — это немного другое. Это чтобы удалять лишние копии одной функции.

                                  В формате OMF была секция COMDAT, которую создали ради «Фортрана». В «Фортране» можно было в каждом модуле объявлять глобальные переменные в блоке COMMON. При линковке блоки COMMON мерджатся в один, от каждой переменной остаётся только одна копия.

                                  Потом секцию COMDAT стали использовать кресты для инстанцирования крестошаблонов, чтобы удалять лишние копии.

                                  Вот «function-level linking» как раз про это. Если в разных модулях попадаются одинаковые специализации одного шаблона, то благодаря мерджингу COMDAT'ов в экзешник попадёт только одна копия.
                                  Ответить
                                  • > лишние копии одной функции

                                    В том числе и последнюю. Оно и для мержа и для выбрасывания, емнип, работает. Т.к. между такими секциями не будет никаких неизвестных линкеру прыжков.
                                    Ответить
                                    • Понял. Если заставлять компилятор пихать каждую функцию в собственную секцию, то линкер легко сможет избавиться от неиспользуемых.
                                      Ответить
                            • Пожалуй, распишу, почему линкер может выкинуть модуль (объектный файл .o, .obj) целиком, но не может выкинуть функцию из модуля.

                              Линкер не занимается дизассемблированием модуля. Он для этого слишком анскильный. О том, ссылаются ли функции друг на друга, он узнаёт по таблице перемещаемых данных (relocations, fixups).

                              Если функция ссылается на функцию из другого модуля, компилятор добавит запись в таблицу фиксапов, чтобы линкер после сборки пофиксил адрес. Если функция помечена как экспортируемая, компилятор добавит ссылку на её начало в таблицу экспорта.

                              Инструкции JMP SHORT, JMP NEAR, CALL NEAR, все эти jae/jg/jz... были с адресацией относительно IP ещё задолго до 64-битных процессоров, когда ещё слова «rip-based» не знали. Так вот если прыжок внутри одного модуля, то он происходит на константное расстояние, и ничего фиксить не надо, поэтому компилятор в таблицу фиксапов ничего не добавит.

                              Если линкер захочет выкинуть одну функцию из модуля, то поедет вся адресация. Придётся фиксить аргументы всех коротких джампов. Аргументов коротких джампов в таблице фиксапов нет, а линкер интеллектом дизассемблера не обладает. Более того, линкер не узнает, можно ли выкинуть эту функцию (вдруг на неё есть короткий джамп, который никак не помечен в таблице фиксапов).
                              Ответить
                            • Если функция static, то разве это не значит, что снаружи модуля в нее все равно не прыгнуть?
                              Ответить
                              • Значит. И статик конпелятор выкинет сам. Анонимый неймспейс возможно что тоже выкинет. Жопа в том, что всякие шаблоны обычно просто inline.
                                Ответить
                                • Необходимость писать «static inline» напоминает «Жабу» с её вечными «private static final synchronized pitushized cookadoodled».
                                  Ответить
                                  • В идеале любая функция должна быть static по умолчанию.
                                    Ответить
                                  • java-это проза
                                    функциональщина-поэзия
                                    Ответить
                                    • Джава это урок русскова языка в третьем классе.

                                      Зимой в лесу выпал снег. По снегу идет медведь. Холодно в лесу зимой!


                                      public static void main
                                      Ответить
                                      • Ну да, а в реальной жизни-то всегда "смеркалось"
                                        Ответить
                                      • Почему урок в третьем классе, а не, например, трудовой кодекс?

                                        Текстов где тавтология органична — дохуя.

                                        «Лизингодатель обязуется приобрести в собственность определённое лизингополучателем имущество у указанного им продавца и предоставить лизингополучателю это имущество за плату во временное пользование, с правом выкупа и без него».
                                        Ответить
                          • Нашёл способ оптимизации кода. «D» выкидывает лямбды, если они в рантайме не нужны.

                            import std.stdio;
                            
                            void main()
                            {
                                enum res = function int(int n)
                                {
                                    int s = 0, k = 1;
                                    while (s < n)  {
                                        k = k + 3;
                                        s = s + k;
                                    }
                                    return k;
                                }(66);
                            
                                writeln(res);
                            }
                            Ответить
                  • Помните пример про
                    writeln(iota(1,17).filter!(a => a%2==0).map!(a => a*a).fold!((a,b) => a+b))
                    ? https://run.dlang.io/is/ALyOHg

                    Реальные сигнатуры функций длиннющие:
                    call pure @safe int std.algorithm.iteration.fold!(onlineapp. main().__lambda3).fold!(std.algorithm.it eration.MapResult!(onlineapp.main().__la mbda2, std.algorithm.iteration.FilterResult!(on lineapp.main().__lambda1, std.range.iota!(int, int).iota(int, int).Result).FilterResult).MapResult).fo ld(std.algorithm.iteration.MapResult!(on lineapp.main().__lambda2, std.algorithm.iteration.FilterResult!(on lineapp.main().__lambda1, std.range.iota!(int, int).iota(int, int).Result).FilterResult).MapResult)@PL T32
                    Ответить
                    • Всё равно магленые имена С++ круче

                      Как вообще ты попал в дэ?
                      Ответить
                      • просто случайно нашел лет 5 назад, чуть-чуть пописал.
                        Точно также с плюсами - после универа пописывал, потом внезапно работу по ним нашел. Авось и Ди сгодится.
                        Ответить
                    • То есть он не просто вызывает цепочку функций, а пытается заинлайнить их код в одну функцию?
                      Ответить
              • Ну что-то то я знаю. Мы в универе прогали на 16битной хуйне. Там были регистры AX, BX, CX и DX. В 32 вроде стали EAX, EBX, итд.
                Ответить
                • Если ты умеешь в 16ти битный, то тебе будет во много раз проще.

                  Гораздо важнее тут (может оказаться) не сам асембррел, а понимание современного проца со всеми его режимами, вротуальной мапятью и пыр.

                  Ирвина я всеж таки просмотрел бы, а потом подумал про mastering assmebly language параллельно с книгами про рахитектуру писюка (mindshare, или просто мануалы интел, если смелый)
                  Ответить
                • Всё верно. Если не совсем забыл ассемблер для 16-битной хуйни, то большую часть ты знаешь.

                  В 32-битных процессорах добавились регистры на букву «E» плюс два новых сегментных (FS, GS). В 64-битных добавились регистры на букву «R» плюс несколько нумерных (R8, R9... R15), а также регистры-половинки sil, dil, spl, bpl (версии с буквой «h» в конце почему-то нет).

                  Самое сложное — это то, что связано с защищённым режимом. Вы прогали под реальный?
                  Ответить
                  • > защищённым режимом

                    А что там сложного то? Для прикладнухи ничего не поменялось, только ёбли с адресами меньше стало да регистров и всяких полезных инструкций досыпали. Ну и про странички немного стоит знать - что они по 4к и не все из них можно читать, писать и исполнять.

                    Со стороны операционки - да, нетривиально. Но если очень глубоко в ядро не лезешь, то это не особо то и важно.

                    З.Ы. Можно даже дрова писать и не знать про детали защищённого режима.
                    Ответить
                    • Ну для чего чел хочет прокачать асм? разве не для того, чтобы лучше понимать, как всё работает?

                      Защищенный ржим это много всякого: и C3, и таблцы страниц, и TLB и PAT и этот, который вместо него, все время забываю, и исключения всякие, и по два стека на поток..
                      Ответить
                      • Х.з., он не признаётся зачем ему асм. Но, вполне вероятно, что асм ему для практических целей нужен - дампы читать, например.

                        CR3 и таблицы это, конечно, интересно. Но без них вполне можно прожить, умный дебаггер поможет всё это размотать и посмотреть в удобном виде.
                        Ответить
                        • Прожить можно вообще без асма: включил символы, и пахай:) Дохуя живет на свете программистов, которые асм видали только в инстике.

                          Имхо, если уж заморачиваться с асмом, то ради того, чтобы лучше понимать лоу левел пишутню.
                          Ответить
                          • Х.з., я 32-битный асм начинал как раз с реверса прикладнухи. А лоу-левл детали защищённого режима про все эти GDT, IDT и пейджтейблы уже намного позже осилил.
                            Ответить
                            • Пользуясь случаем, спрошу: добился переполнения буфера, программа вылетает с "нехорошая операция по адресу 0x41414141" (0x41='A'). Как это дальше заюзать?
                              Ответить
                              • попробуй вместо A подствить B, тогда ты получишь 42.
                                Ответить
                                  • старше 127 может начаться всякая унылая поебота
                                    Ответить
              • >1. С синтаксисом просто: одна строчка — одно действие.
                ага, только их два: AT&T (ака прыщеговно) и Intel

                >С железом: у процессоров семейства x86 RBP, RSP, EDI — это регистры общего назначения
                Ага, только SP это еще и стек поинтер, и DI это дестинейшен индекс кое-где (емпин)

                >3. Интерфейс с другим софтом.
                ну и приснопамтных каловых конвенций тоже штук десять
                Ответить
                • Про регистры: на PDP-11 почти любой регистр можно было использовать с почти любой инструкцией. С x86 сложнее: в сетке инструкций некоторые комбинации регистров могут отсутствовать.

                  Таким образом, получаем:
                  SP — это указатель на вершину стека. Он неявно присутствует в инструкциях PUSH/POP.
                  DI и SI — это указатели target/source для строковых операций (они там тоже неявно).
                  CX в некоторых инструкциях присутствует тоже неявно, но уже в роли счётчика (LOOP, например).
                  AX — универсальный аккумулятор. Он неявно присутствует в умножении и делении.
                  DX может использоваться вместе с AX в умножении и делении, чтобы вместить значение, которое в два раза длиннее регистра.

                  И это я только начал. Так что да, у x86 «универсальные регистры» являются универсальными с кучей ограничений.

                  Но для инструкции MOV, а также для сложения, вычитания это всё универсальные регистры.
                  Ответить
      • Который для обычных компов, для начала. Про хуйню выше ответил. Хочется научиться понимать хоть на базовом уровне.
        Ответить
        • Я тебе точно говорю: начинать надо с кипа ирвина, хотя и Юров неплох.

          Полезно бывает еще понять рахитектуру писи в целом, но тут уже зависит от глубины твоего познания: от "кода" Пецольда до Mindshareовских книжек можно присоветовать рразное
          Ответить
    • Оно тебе надо? Подумой!
      С Лурка: "На самом деле, соль Ассемблера в том, что он делает ВСЁ, кроме того, что нужно. Термин «Научиться программировать на Ассемблере» (см. ассемблировать, «оседлать», «обуздать», «поработить» Ассемблер) подразумевает вывод на протяжении долгого и попабольного обучения хитроумного плана, который позволит наебать Ассемблер незаметно для него, тем самым заставив его работать на вас. Судя по всему, успеха добиваются единицы. Остальные же, которые, не понимая того, становятся рабами Вышеназванного, теряют волю, сходят с ума и, в лучшем случае, попадают в армию."
      Ответить
      • Асембел нужен, чтобы понимать оптимизации копулятора, кол конвешнешы, устройство компа, и вооообще чтобы быть ближе к борманду, чем к пхпшнику

        Писить на нем соверешнно не обизательно
        Ответить
        • Сёма скажет, что это нахуй не нужно.
          Ответить
    • Советую Кипа Ирвина

      Язык ассемблера для процессоров Intel (+ CD-ROM)

      Очень хорошая книга. Чуть чуть будет классического асма под реалрежим, и потом много 32х битного.
      Ответить
    • "На асме" сейчас не пишут. И "знание асма" - это в основном знание архитектуры проца и соглашений о вызове. Можешь того же Юрова читнуть для начала, основы в нём нормально расписаны (хотя х86_64 и SSE там не будет).

      И надо определиться, что ты хочешь с асмом делать. Основных областей сейчас три - системное программирование, пирфоманс и реверсинг.

      В системном программировании асм юзается редко, но он очень специфичный. И асм там - наименьшая из проблем.

      В пирфомансе для прикладнухи ты в основном будешь юзать SSE. Intel Intrinsics Guide в зубы и вперёд.

      И наконец реверсинг и отладка, самая интересная область, имхо. Можно почитать какие-нибудь гайды и статьи где что-нибудь хачат, попробовать что-то подебажить самому. "Знание асма" тут вторично, компилятор не так много инструкций юзает да и большинство из них очевидные, за неделю все освоишь. Здесь в основном нужна практика. Много практики, причём с разными конпеляторами. Чтобы быстро находить важные моменты и скипать мусор и т.п. Чтобы подсознательно чувствовать, какую сишную конструкцию ты сейчас видишь перед собой.

      З.Ы. Кстати, в Intel Software Developer Manual архитектура очень неплохо расписана, хоть эти гигантские тома и выглядят страшно.
      Ответить
      • Я не знаю конечно как вы все, но я за начинание с основ.

        Лучше взять досбокс, изучить асм под реальный режим, и написать на нем змейку. Параллельно на примитивных и маленьких сущностях разберешься с регистрами, флагами, стеком, кучей, прерываниями, и основами работы с железом.

        После этого уже можно изучить защищенный режим (32х битный лучше сразу) с его MMU, страницами, уровнями защиты и Генералом Протектед-Фолт и начать писать под него.

        А дальше уже длиный (v86 можно пропустить).


        Ну то-есть не надо начинать с Intel Intrinsics Guide, если ты спрашиваешь, что делает push RBP
        Ответить
        • Если ты спрашиваешь, что делаешь push rbp, то змейка на асме и знание защищённого режима ничем тебе не помогут.

          А вот какая-нибудь статейка про реверсинг, где чел расскажет, что эта пара инструкций создаёт фреймы для дебаггера и покажет как они выглядят и используются в том же windbg, будет куда полезнее.
          Ответить
          • Пожалуй, да. В собственной змейке push rbp может и не встретиться, если ты с чужими функциями не сталкиваешься. В собственном коде ты можешь передавать значения как угодно. Можешь вообще пользоваться только глобальными переменными, поэтому frame pointer тебе не понадобится.

            Нужно изучать статьи про реверсинг/отладку или про совместную линковку модулей, написанных на разных ЯП, чтобы увидеть реальные примеры соглашений вызова.
            Ответить
            • По-моему это даже не часть соглашения о вызове. Т.е. в большинстве соглашений ты обязан сохранять ebp если меняешь его. Но само значение ebp никого кроме тебя и дебаггера не ебёт.
              Ответить
              • Да, это просто такой более-менее стандартный (в смысле «все так делают», а не «написано на бумаге») пролог. И, разумеется, конпеляторы вольны его менять как им угодно (в частности, вообще выбрасывать на высоких уровнях оптимизации).
                Ответить
                • Так омишен же, не?

                  BP идет в стек, и так сопрягается опричная гусинеица, чтобы развертить стека при в отсутствии символов.

                  В моем децтве питузы часто его переиспользовали, и засирали стек. Но уже лет десять как его никто не трогает

                  не?
                  Ответить
                    • В первых версиях x86 нельзя было адресоваться косвенно через SP. И потому, чтобы обращаться к переданным через стек переменным, использовали регистр BP. В него копировали содержимое SP при входе в функцию.

                      Так как сам BP при этом клали в стек, то получалось, что BP указывает на начало предыдушего стекового фрейма. А в предыдущем стековом фрейме, по известному смещению от начала, тоже лежит BP (рядом с адресом возврата).

                      Таким образом стало возможно получить список фреймов из памяти с адресами функций.

                      Если у тебя есть символы для первой и пятой функций, то ты можешь прочитать стек фрейм, просто функции без символов для тебя будут выглядеть как адреса.

                      В 386 появилась возможность адресоваться от SP, и от использования BP отказались. Адерсоваться от SP менее удобно (так как он едет), но компилятору это ок (в отличие от прогаммиста). Зато BP приспособили под другие задачи (потому что регистров было мало).

                      Таким образом стало уже нельзя получить фрейм из памяти без наличия ВСЕХ символов.

                      Где-то с в районе x64, было решено, что умение получить фрейм -- важно, а регистров и так много, и BP опять стали использовать как указатель на фрейм: класть в него SP, а его самого класть в стек

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

            Впрочем, это мой подход. Кому-то может казаться иначе
            Ответить
        • Я спрашивал не что делает push, а зачем.
          Ответить
          • Тогда тебе надо читать про кол конвешнеш
            Ответить
              • Прямо в вики про колнешвеншн напииано

                push    ebp       ; save old call frame


                Правда, формально это не часть конвеншнеа: ты можешь вероятно засрать BP
                Ответить
                • См. коммент выше. В конвеншене обычно написано, что вызываемая функция не портит ebp. Иначе функции со стекфреймами совсем рассыпятся. Но про цепочку фреймов там ничего нет. Т.е. в общем-то конпелятор может (и юзает) его просто как ещё один регистр.
                  Ответить
                  • Верно ли я понимаю, что сохранение EBP (aka frame pointer) нужно, чтобы раскручивать стек без символов? Иными словами, это FPO, и управляется опцией коуплятора?
                    Ответить
                    • Сохранение EBP нужно, чтобы не поднасрать функции, которая вызывает твою функцию, если ты в своей функции значение EBP меняешь.

                      Почему так прицепились именно к EBP? До 80386 не было косвенной адресации относительно регистра SP. Т. е., например, писать [SP-8] было нельзя. Нужно было использовать какой-нибудь другой регистр. Под горячую руку подвернулся BP, хотя можно было BX, SI, DI.

                      Потом в 80386 в 32-битном режиме стало можно использовать и ESP, но привычка осталась. Т. е. теперь можно писать [ESP-8], [RSP-8] и не думать о том, чему равен EBP/RBP.
                      Ответить
                      • А кто сохраняет-то? Коли или колер?

                        Всё верно: до 386 все были вынуждены ложить SP в BP ради косвенной адресации.

                        Потом петух открыл, что BP со значением SP (лежащий в стеке, там чуть ли не пуша его туда клал) позволяет развертать стек без символов.

                        Потом стало можно косвенно адресоваться через SP, и BP приладили для иного. Так была засрана возможность развертать стек без символов. Регистры тогда были на вес платины.

                        Потом регистров стало дохуя (в районе x64) и BP опять стали юзать как указатель на фрейм.
                        Ответить
                        • ebp сохраняет вызываемый (если он его меняет, само собой), чтобы совместимость со старыми конвеншенами осталась.

                          А вот будет ли он юзать ebp как обычный регистр или как указатель на начало своего фрейма - это уже зависит от настройки FPO.
                          Ответить
                          • тогда зачем же вызыватель сохранил bp?
                            Ответить
                            • Очевидно, потому что у него было отключено FPO и следующей строкой он сделал mov ebp, esp (т.е. поменял его). Ну либо у него было включено FPO и он просто решил какую-то переменную положить в ebp (т.е. поменял его).

                              Перед call'ом же он ничего не сохраняет.
                              Ответить
                              • Я тупой видимо((


                                Ты пишешь

                                >ebp сохраняет вызываемый
                                Это значт, что любая функция обязана пушнуть EBP прежде, чем в него насрать.
                                И именно потому он мог его пушнуть.

                                Так почему ты говоришь, что пушанье BP это не часть колконвеншена?
                                Ответить
                                • Использование ebp в качестве фреймпоинтера - не часть колл конвеншена.

                                  А пушанье - часть. Равно как и с ebx, edi и esi.
                                  Ответить
                                  • окей, перефразирую

                                    Класть в BP указатель на стек -- добрая воля компилятора

                                    А пушать в стек BP -- требование конвенции

                                    ку?
                                    Ответить
                                    • Конвенция не требует пушать BP, она требует его сохранить, то есть после возврата BP должен остаться таким же, каким был до вызова. Как компилятор этого добьётся — конвенцию не волнует. Он может записать BP куда-нибудь в память, может в AX запихнуть, может сохранить в «Реестре Windows», может попросить пользователя на бумажке записать.
                                      Конечно, в реальности используются два метода: «пушнуть в стек» и «вообще не трогать». Но, повторюсь, это не потому, что так делать требует конвенция, а потому, что так проще (быстрее, удобнее).
                                      Ответить
                                      • Я понел


                                        То-есть если я просто его не трогаю, то конвенция соблюдена, а фреймпоинтеров нету
                                        Ответить
                                        • Ну да, или если ты его трогаешь, но юзаешь под какое-нибудь i для твоей функции. Конвенция тоже соблюдена, но вместо фреймпоинтера там мусор.
                                          Ответить
                                • В колконвеншне перечислены регистры, которые должен сохранять вызываемый. bp/ebp/rbp в их числе, поэтому их и пушают.
                                  Ответить
    • Денис Юричев, «Reverse Engineering для начинающих (Понимание языка ассемблера)».
      Ответить
    • Справедливости ради, многие гейдевки тоже не особо умеют в оптимизацию.
      Ответить
      • Большинство гейдевок вообще скрипты для сюжетки пишут, да всякие внутренние тулы для удобства дизайнеров, по-моему.
        Ответить
        • Это если в игре есть сюжетка.

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

          Кстати, мне чот кажется, что том же Анриале уже даже никаких скриптов писать не надо, для всего есть гуй.
          https://docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/Variables/index.html
          Ответить
    • >highlighting dozens of lines of code with 16 different color
      ну гейдевки и не должны уметь: в написиньи хайлайтеров, лексеров и парсеров есть свои секреты.
      Ответить
    • Правильно сделали.
      Я бы всё о долбоёбах выкладывал в открытый доступ.
      В том числе об инфицированных, где и как предположительно они заразились.
      Ответить
      • Даже о том, от кого подцепил трипак Вася из 12-й квартиры?
        Ответить
        • Конечно. Заболеваемость сразу упадёт. Можно ещё уведомления рассылать всему кругу друзей, чтобы вовремя могли отменить встречу или пойти провериться.
          Ответить
          • https://ru.wikipedia.org/wiki/Врачебная_тайна

            Вроде как даже инфу по ковиду сейчас не разглашают.
            И не понятно как предоставлять на работу «больничный» (ни разу не сталкивался с больничными), там написан диагноз?
            Ответить
            • Диагноза вроде не было, только специальность врача. В случае с ковидом там банальный терапевт будет скорее всего.
              Ответить
                • Сейчас вроде пишут коды по МКБ-10. Для ковида там тупо нет кода. Максимум, что можно написать, это «пневмония неуточнённая».
                  Ответить
      • У нас по городу неофициальная яндекс-карта появилась, где отмечены дома с зараженными. В итоге "в нашем доме поселился замечательный сосед".
        Ответить
        • ну так возьмите факелы, и сожгите их
          Ответить
      • Охуительная у вас логика. По закону так делать нельзя, но если конкретный питуз нам не нравится, то на закон нам похую.

        Именно по этой причине Россия такая Россия
        Ответить
        • А вот кстати, законны ли списки должников, которые любят вывешивать на подъездах?
          Ответить
    • Прикольно. Вышел с посонами пива попить, а вернулся с кредитом МФО "Быстрые деньги".
      Ответить
    • Чубакка — это вуки с планеты Кашиик, но Чубакка живёт на планете Эндор. Подумайте об этом, в этом нет смысла! С чего бы вуки ростом два с половиной метра жить в Эндоре с 60-сантиметровыми эвоками? В этом нет смысла!

      Но что ещё более важно, вы должны спросить себя, а при чём тут данное дело? Да ни при чём, леди и джентльмены, это не имеет никакого отношения к данному делу. В этом нет никакого смысла!

      Взгляните на меня, я адвокат, защищающий крупную звукозаписывающую компанию, и я веду речь о Чубакке. Какой в этом смысл? Леди и джентльмены, я несу бессмыслицу, во всём этом вообще нет смысла!

      Итак, запомните, когда вы, сидя в этой комнате, взвешиваете и сопрягаете Декларацию независимости, есть ли в этом смысл? Нет, в этом нет смысла!

      Итак, леди и джентльмены, если Чубакка живёт на Эндоре, вы обязаны вынести оправдательный приговор. Спасибо, ваша честь, я закончил.
      Ответить
  • Походу нужен перекат, тема не открывается
    Ответить
  • пыщебляди, зачем вы завезли по умолчанию позикс ацл, прышебляди?!!
    Я не заказывал позикс ацл, а вы его в своей сраной убунте по умолчанию мне прописали для ext4.

    Говоят, без позикс ацл не работает системд
    Поттеринг ебанутый, прыщебляди, он преващает вашу ОС в мутное неконситентное говно

    Скоро прийдется уходить от нелогичного нестабильного недокументированного нагромождения неподдерживаемых говен в сторону номральных стабильный и логичных ОС типа Виндуос
    Ответить
  • A ghetto gunship is an air transport filled with T1 Light Assault Bots (LABs for short). This forms a de facto gunship since LABs can attack while occupying a transport.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8