- 1
IT Оффтоп #46
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
-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 # 0
PACTPOBblu_nemyx # 0 ⇈
guest # 0 ⇈
KOPOHABuPYC # 0 ⇈
gost # 0
gost # 0
PS, перекатывайтесь из прошлого оффтопа, ГК уже в эксцепшон падает.
bormand # 0 ⇈
3.14159265 # 0 ⇈
ifconfig
bormand # 0 ⇈
3.14159265 # 0 ⇈
WTF?
Ну вот например /sbin/iftop
Выдаёт интерфейс и мак-адрес, затем пишет:
wlan0: You don't have permission to capture on that device (socket: Operation not permitted)
3.14159265 # 0 ⇈
# ifconfig -bash: ifconfig: command not found
Блин, вот это я отстал от жизни.
bormand # 0 ⇈
guest # 0 ⇈
route2 же
3.14159265 # 0 ⇈
Байка гласит что у Томпсона с Ритчи просто флоппики были по мегабайту.
Все утилиты не влезали на один, вот они и монтировали их по разным путям.
/bin
/sbin
/usr/bin
/usr/local/bin
PACTPOBblu_nemyx # 0 ⇈
/usr/sbin
/usr/local/sbin
/opt/bin
/opt/sbin
/opt/local/bin
/opt/local/sbin
bormand # 0 ⇈
/lib64
/libx32
/usr/lib32
/usr/libx32
/usr/lib/x86_64-linux-gnu
/usr/lib/i386-linux-gnu
/usr/libexec
3.14159265 # 0 ⇈
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-битные.
bormand # 0 ⇈
3.14159265 # 0 ⇈
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.
То есть на кой чёрт было их мерджить, если придумали в корне ещё один путь.
bormand # 0 ⇈
3.14159265 # 0 ⇈
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.
PACTPOBblu_nemyx # 0 ⇈
3.14159265 # 0 ⇈
bormand # 0 ⇈
3.14159265 # 0 ⇈
Мне как-то похер где оно будет лежать.
А вот то что в 2к20 в Исках невозможно получить аппаратное ускорение декодинга видео в браузере — всем насрать.
Зато нужно нагородить поверх работающей альсы 10 абстракций для миксования аудио, перетасовать каталоги, обосрать Столлмана и Айка за какие-то высказывания и включать м-м-максимальный SJW.
bormand # 0 ⇈
Дык тут браузеры отчасти виноваты. Загнали всё в бесправную песочницу, вот и нет ускорения. Очередной конфликт пирфоманса и безопасности.
3.14159265 # 0 ⇈
Ванильный инсталл
3_dar # 0 ⇈
3.14159265 # 0 ⇈
Нет. Неправда. Сейчас очень много мест от css до канваса рендерятся нативно.
Там больше проблем с глючными дровами.
Их очень долго чинили, сейчас ситуация более-менее.
В браузерах обычно есть блек-лист хуёвых карт/драйверов. Которые можно отключить.
А в Гiгeтох до последнего момента В ПРИНИЦПЕ нельзя было включить аппаратный декодинг видео в Линуксе. (В Винде работает из коробки)
Нет ни флага, ни ключа, ни настройки
При том что аппаратное ускорение рендеринга и композитинга включено годами и по дефолту.
guest # 0 ⇈
3.14159265 # 0 ⇈
Да, но Щозiлла позицинируется как опен-сурсная контора.
Вместе с этим поддержка основой опен-сорс плаформы Луникса херится, баги висят десятилетиями.
При том что изобретать-то ничего не нужно: давно существуют аналогичные DXVA врапперы libva и vdpau.
А сами привязки декодеров прикручены в ffmpeg, и так используемом Гiгeтохом.
3.14159265 # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
З.Ы. Я когда-то сток NGK на несколько лет назад скроллил, и браузер это нормально обрабатывал.
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
На мобайле просто не так.
guest # 0 ⇈
guest # 0 ⇈
жутко бесит, кстати
Воооюще единственный номальный лейаут, который я видел, был в Самой Лучшей ОС.
Базовая система шла в /bin и /etc/
Поставленные сердпарти питухи -- в /usr
Но прыщи никогда в такую красоту так и не смогли, к сожалению
guest # 0
guest # 0
У Пи имя Георгий.
bormand # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0
Милаха. Не правда ли?
guest # 0 ⇈
дальше не читал
guest # 0 ⇈
А ты нет.
guest # 0 ⇈
PACTPOBblu_nemyx # 0 ⇈
Web_Monkey # 0 ⇈
Web_Monkey # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
А компания Гугел обновила приложение камеры для своих телефонов и тепер оно крашится при старте почти у всех счастливчиков, которые откладывали с обедов на Пиксель.
А фирма Эппл написала такой классный системный логгер, что он при попытке сформировать строку в классическом принтефном виде падает с bad access и тоже уносит всё приложение. Потому что ошибка это навсегда.
Уверен, что компания Майкрософт тоже что-нибудь учудила за последний месяц, например, выкатила необновляемое и неудаляемое обновление.
guest # 0 ⇈
Desktop # 0 ⇈
А нас и здесь неплохо кормят.
guest # 0 ⇈
Когда ты Brendan Gregg тоже хорошо
А когда ты седьмая вода на киселе, то оно там не сильно отличается от другой хорошей компании
guest # 0 ⇈
guest # 0 ⇈
Сейчас не 1993-й год, когда россиянские программисты валили в штаты, потому что у них там компьютер рабочий был дороже, чем их зарплата за год в НИИ "россельмаш"
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
2) Жить только на съёмных хатах, иначе пол жизни пройдёт в ебучем транспорте.
3) Ебучая слякоть на дорогах (у нас тупо лёд, лол).
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
У меня знакомые понаехали в штаты и европы ради конкретнрых компаний.
Вот хочешь ты работать в твиттере? Добро прожаловать в америку. Но это не ради денег, а потому что ты течеш именно от твиттера
bormand # 0 ⇈
Да нахуй он мне нужен, я там даже не зареган...
guest # 0 ⇈
Вот тогда тебе в америках делать-то и нечего
У нас тоже есть офис в Новосибе кстати, но самое низкоуровневое у нас это наверное умение это в кресты, профилирование нативного кода, и может еще контрибьют в jdk, так что тебе, вероятно, было бы не интересно
bormand # 0 ⇈
Не ну jit'а попилить прикольно конечно было бы. Или там что-то более прозаичное?
guest # 0 ⇈
https://developer.apple.com/metal/
Разговоры про оптимизацию джыта я тоже слышал, но насколько они близки к реальности -- я не знаю.
Можешь дать мыло если хо, я скину ссылок с подробными описаниями.
bormand # 0 ⇈
[color]Тараса приглашали? После него джава будет летать на селероне 600.[/color]
guest # 0 ⇈
jojaxon # 0 ⇈
guest # 0 ⇈
У него всё будет летать
Павда, только на его машине
С его версией компилятора
И его ОС
Desktop # 0 ⇈
guest # 0 ⇈
https://developer.apple.com/documentation/metal/migrating_opengl_code_to_metal
Desktop # 0 ⇈
И, кстати, на винде жаба директиксом что ли рисует? А то я не сильно в курсе
guest # 0 ⇈
https://mail.openjdk.java.net/pipermail/announce/2019-July/000271.html
https://bugs.openjdk.java.net/browse/JDK-8206382
https://bugs.openjdk.java.net/browse/JDK-8238361
Ответ на твой второй вопрос: да
Most graphical Java applications are written using the Swing UI toolkit, which renders via the Java 2D API. Internally, Java 2D can use software rendering plus a blit to the screen or it can use a platform-specific API, such as X11/Xrender on Linux, Direct3D on Windows, or OpenGL on macOS
Desktop # 0 ⇈
guest # 0 ⇈
Ну и в целом там довольно серьезный хайлоад: он позволяет попробовать всякие интересные штуки на бекенде.
Допустим, тебе интересно решить задачу быстрой отдачи контента ста сорока восьми миллионам пользователей одновременно. В обычной конторе это трудно сделать.
Desktop # 0 ⇈
Ну и так-то там это уже всё написано. Я не думаю, что они ежемесячно перетрахивают core functions
guest # 0 ⇈
Даже если это всё придумал Архитектор, сотрудники всё равно будут лучше понимать хайлоад, чем рядовая веб-макака.
Я так понимаю, что с пунктами про тщеславие ты согласен?
Desktop # 0 ⇈
- вообще они с RoR начинали емнип.
Про тщеславие согласен, но это проходит с возрастом.
guest # 0 ⇈
А теперь там scala (емпнип). Хайлоад на скале на дороге не валяется, нет?
Кстати, уход твиттера от руби на скалу нанёс такой удар по реноме рубина, от которого он не смог оправиться.
Миллионы хомячков решили, что руби тормозит. Хотя их нагрузка равна примерно 0.001% от твиттера, и руби там явно не бутылочное горлышко
Desktop # 0 ⇈
Пхп-мартышка в итоге намного более востребована.
guest # 0 ⇈
Думаю что фейсбуки условные тоже ценят умение в хайлоад, не?
Desktop # 0 ⇈
Очень всё специфично.
А проёбывают они точно так же со скалами, как делали это с рубями, я выше примеры привёл.
guest # 0 ⇈
Впрочем, в фейсбуке есть другие функциональные языки. Например, у них есть OCaml. Кажется что опыт в хайлоаде плюс опыт в фунциональщине -- хороший для них опыт.
А что за примеры?
Desktop # 0 ⇈
guest # 0 ⇈
В начале ветки там про девачку из фейсбука
Desktop # 0 ⇈
Desktop # 0 ⇈
- там вроде в среднем люди по 2-3 года работают, не более. Интересно, почему?
guest # 0 ⇈
Я не знаю, на самом деле. Я не работаю в тви, и не собираюсь. Мне нравится работать над интеересной питушней, и похуй где
Но я ретранслирую слова моих знакомых из крупных компаний
1) их прет хайлоад
2) их прет, что их софтом пользуются миллионы
Desktop # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
MAKAKA # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
BEKTOPHblu_nETyX # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
https://ichef.bbci.co.uk/news/976/cpsprodpb/2DE0/production/_106544711_e4922507-673a-4f2f-b91d-3479994a870b.jpg
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
BEKTOPHblu_nETyX # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Хотя чувак, который движок для perl6 на хаскеле пилил, вообще пол сменил в итоге...
ropuJIJIa # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
Но лучше все таки силовые и памповые упражнения (лучше со свободными весами) и белок обязательно
С утра пей сывороточный
Перед сном -- казеин
Ешь творог и куриную грудку
Качай мышц три раза в неделю
День ноги
День грудь
День руки
Спину же и пресс раскидай на остальные дни
guest # 0 ⇈
Но я имел в виду что-то типа «PHP» может?
guest # 0 ⇈
Работы у тебя не будет, и придется подрабатывать курьеом. Так и накачаешься
guest # 0 ⇈
Жру как медведь.
guest # 0 ⇈
Уменьши кардио (бег и пр, от него мышца горит), увеличь силовые, увеличишь белок и углеводы, гейнеры и добавь креатин: он задерживает влагу в мышцах.
Но лучше конечно обратиться к тренеру.
guest # 0 ⇈
Бег и так не делал. Гейнер правда перестал жрать, т.к. переехал домой, а новый покупать было лень.
К тренеру только после пиздеца смогу вернуться.
guest # 0 ⇈
guest # 0 ⇈
Точно такая же хуйня есть в гугле и джберйнс, например
Там дают халявные булочки, и многие сотрудники наращивают себе жопу.
Правда современная молодь уже вся сплошь помешана на спорте, так что проблема стоит меньше, чем 15 лет наза
guest # 0 ⇈
А столовая у них бесплатная.
guest # 0 ⇈
а где пиво с орешками -- там жопа)
AFAIK, в Яндексе дают спец деньги на карту, а в жетбройнс тоже бесплатная
guest # 0 ⇈
В мэйле дают хуй с маслом, но у них есть ахуенный тренажёрный зал.
guest # 0 ⇈
Web_Monkey # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Может, твоя проблема в том, что ты пишешь на С++? Писал бы на фронтенде, было бы куда больше тян вокруг
guest # 0 ⇈
guest # 0 ⇈
Или в чем?
guest # 0 ⇈
bormand # 0 ⇈
Лучше не надо. Это всё круто, конечно какое-то время. Но потом личные проблемы превращаются в факапы на работе и наоборот.
guest # 0 ⇈
guest # 0 ⇈
Но это уже проблемы следующего уровня, кмк: вопрошающему нужно впринципе начать жить с тян и ебаца c ней, остальное пока не существенно
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Однако же вопрос с тян действительно лучше решить: возраст между 20 и 30 это тот возраст, когда надо бухать, тусить, просыпаться в неизвестных квартирах по утру, влюбляться сразу в троих девушек (причем в двух не безответно), и не помнить, что было вчера.
guest # 0 ⇈
Это правда.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Я не супер-спец, но afaik фишка в том, что не надо каждую тян сразу рассматривать с точки зрения "пошлет / не пошлет".
Нужно просто научиться общаться с тян. Болтать в столовой. Ходить вместе в выходные в парк кататься на роликах. Пиздеть с ними по мессенджеру за жизнь. Ходить в бар пить пиво.
При этом не надо сразу предлагать ей всякое. Надо просто общаться.
В какой-то момент у тебя будет N знакомых тян. Это, во-первых, даст тебе опыт общения с тян. Ну там чтобы не обсираться пунцовой краской, не говорить хуйни, и может быть даже искорметно острить (тян обычно такое любят).
Во-вторых это даст уверенность. Если вокруг много тян, и они к тебе благосклонны (даже чисто по дружески), то это улучшает самооценку. Чтобы тян были благосклонны, надо не предлагать им сразу всякое.
В-третьих, среди них может найтись та единственная (может быть единственная на этот месяц, так тоже бывает, но это тоже не плохо).
В общем это как с программированием: если сразу думать "я хочу работать в гугл и писать прыщеядро для андроид", то можно всю жизнь мечтать.
А если начать работать хоть где-то, тупо чтобы набивать руку в кодинге, то можно прокачаться.
guest # 0 ⇈
guest # 0 ⇈
Ты пишешь:
"Так хоть она тебя первый и последний раз нахуй пошлёт."
Это говорит о том, что ты сразу от нее чего-то хочешь. Если бы не хотел -- у нее не было бы повода куда-то тебя посылать, не?
У нас в отделе (и в соседнем отделе, который от нас откололся) есть стайка молодняка. Они вместе ездят кататься на лыжах, например. И чаи вместе пьют на кухне. И даже на карантие в слаке сделали канал, и там тоже пьют чаи.
Примерно половина из них тян в районе до тридцати. Пока что они просто дружат (наскока мне известно), но в какой-то момент там точно образуются пары, я уверен. У вас таких компаний нет?
В интернетиках есть говнопсихологиня под ником "эволюция".
Психологини это конечно унылое говно обычно, но именно эта, вроде бы, специализируется на "как перестать быть задротом, и с кем-нить познакомица". Можешь интересна ради попробовтаь почитать её мануалы, но это не точно.
guest # 0 ⇈
guest # 0 ⇈
Ладно, допустим в жопу работу. Есть Интернетик. Есть чаты, есть всякие группы в ВК, там разве нету жизни?
В молодости я тусил в чатах (тогда это было популярно: чат ток ру в хорошие годы имел пару тыщ человек, разделенных на сто комнат). Внезпно, я там даже с кем-то знакомился.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
http://friendzone.bot
Может быть попробую, если совчем хуёво будет.
gost # 0 ⇈
Надо будет делать фотки с царапинами на запястье?
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
чертовы милениалы
https://thumb.tildacdn.com/tild3065-6336-4235-b337-303735376637/-/resize/600x/-/format/webp/photo.png
ropuJIJIa # 0 ⇈
Это на каком языке он сейчас написа́л?
Кстати, у нас в одном парке появились странные развлечения:
http://www.izmailovsky-park.ru/42-sport/266-ajsshtok
В Центральной части Парка расположилась уникальная мультиплощадка, на которой собраны самые необычные всесезонные развлечения! Здесь Вы можете поиграть в такие игры, как «Айсшток», «Шаффлборд», «Жульбак», «Новус», «Корнхол».
Почитал, что это такое... А ведь я когда-то над кёрлингом ржал.
guest # 0 ⇈
jojaxon # 0 ⇈
Чем не активность?
guest # 0 ⇈
убей друга ножом
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Лол, да тут главное осознать, что они не инопланетяны, а такие же люди как и ты.
Как минимум за музыку да новости с ними всегда можно попиздеть. А с некоторыми даже погамать можно.
guest # 0
ropuJIJIa # 0 ⇈
2. Хелп по самому асму (у разных реализаций синтаксис немного разный).
guest # 0 ⇈
Web_Monkey # 0 ⇈
ropuJIJIa # 0 ⇈
Сложность там не столько в языке, сколько в особенностях железа.
guest # 0 ⇈
https://govnokod.xyz/_26648/#comment-530949
И понять что каждая строка делает.
guest # 0 ⇈
ложит в стек значение рбп
mov RBP,RSP
ложит в рвп значение из рсп
mov EDI,013h
ложит в еди 013h
Чо тут понима?
guest # 0 ⇈
А нахуя?
> ложит в рвп значение из рсп
А нахуя?
> ложит в еди 013h
А нахуя?
jojaxon # 0 ⇈
ropuJIJIa # 0 ⇈
Остальное — это подготовка так называемого «stack frame». Зачем это нужно, можно понять, если знать историю. Если кратко, то «stack frame» нужно, чтобы удобнее было ссылаться на локальные переменные функции и на аргументы, которые передаются через стек, а не через регистры.
guest # 0 ⇈
думаю, ответ на первые нахуя это чтобы стек потом можно было раскрутить (См base pointer omission).
EDI в данном случае видимо используется для передачи аргумента в вызываемую функцию. Что это за конвенция мне не известно, может внутенняя конвенция D.
13h это 19, думаю тебе это ясно
Я не трогал асем десятки лет, мог и напиздеть.
гуру, помогайте
guest # 0 ⇈
ropuJIJIa # 0 ⇈
bormand # 0 ⇈
Прыщеаби под x64, походу. Только там RDI первым аргументом идёт.
guest # 0 ⇈
матапушта мелкае значение?
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
мув в EDI чиcтит, а в DI не чистит? Как AH/AL чтоли?
Вот блин
bormand # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
зато в моем децтве можно было быстро-бысто нажимать на кнопку trubo.
И читать слово LOHI -- лохи
ахахахах
guest # 0 ⇈
Web_Monkey # 0 ⇈
"Хуйню", кстати, читать полностью совсем не обязьянательно, ищещ инфу к соответствующей команде и относящейся к ней питушне.
guest # 0 ⇈
Если питух не знает, что такое регистрр или сегмент кода, то искать какие-то там комманды не очень полезно
Это, всёж не пхп учить
Web_Monkey # 0 ⇈
ЗЫ. "смегменты" нинужны
ropuJIJIa # 0 ⇈
Про «thread information block» в «Винде», на который в 64-битной системе ссылается регистр GS, а в 32-битной — регистр FS, напомнить?
guest # 0 ⇈
Ну-ка, расскажи ка мне, как проц понимает на каком уровне исполнять твой код?
ropuJIJIa # 0 ⇈
ropuJIJIa # 0 ⇈
https://govnokod.ru/25776#comment497733
https://govnokod.xyz/_25776/#comment-478612
guest # 0 ⇈
https://govnokod.xyz/_26654/#comment-530997
ropuJIJIa # 0 ⇈
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».
ropuJIJIa # 0 ⇈
По пункту №2 документация на процессор. Да, по «Интелу» будет много мути, особенно по защищённому режиму, нужно поискать какое-нибудь краткое описание инструкций. Что-нибудь типа такого:
http://www.club155.ru/x86cmd/PUSH
По пункту №3 — документация по операционкам (SDK), по языкам программирования (читать раздел про совместную линковку с модулями на других ЯП).
Для обучения можно на каком-нибудь ЯП писать хеллоуворлды и смотреть, во что это компилируется. Например, у gcc ключ -S выдаёт ассемблерный листинг, а ключ -masm=intel выведет этот выхлоп в синтаксисе MASM/TASM вместо AT&T.
После компиляции нескольких хеллоуворлдов ты поймёшь, как выглядят ветвления, циклы, вызовы функций, арифметические операции.
bormand # 0 ⇈
Да под дебаггером запусти и будет у тебя одновременно и сишный код и асм. Только оптимизацию лучше отключить на первое время, иначе от этой каши крыша с непривычки поедет.
jojaxon # 0 ⇈
ropuJIJIa # 0 ⇈
Чтобы понять, как работают cmp и jge, придётся изучить флаги процессора.
А вот в самом конце add [RAX],AL — это мусор. Так дизассемблируются байты, равные нулю.
ropuJIJIa # 0 ⇈
ropuJIJIa # 0 ⇈
Понять, почему при вычитании RAX из RAX может получиться не ноль, можно только зная про флаги, про машинное представление числа, про переносы и заёмы при арифметических операциях.
guest # 0 ⇈
gost # 0 ⇈
bormand # 0 ⇈
Я до сих пор путаю above и greater, приходится подсматривать.
bormand # 0 ⇈
IIIuMnAH3E # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Так понимаю, к edx нельзя прыбавиць константу?
bormand # 0 ⇈
guest # 0 ⇈
Почему это не оптимизировать нахуй?
Там значение и K и S (и eax и edx) где-то используется после цикла?
ropuJIJIa # 0 ⇈
jojaxon # 0 ⇈
bormand # 0 ⇈
jojaxon # 0 ⇈
Новые фичи появляются сначала в dmd.
jojaxon # 0 ⇈
jojaxon # 0 ⇈
bormand # 0 ⇈
ropuJIJIa # 0 ⇈
Выкинуть может как раз компилятор. Но чтобы он выкинул, ему нужно сообщить, что символ неэкспортируемый, что ты не будешь никому передавать указатель на эту функцию.
gost # 0 ⇈
Подтверждаю: https://gcc.godbolt.org/z/Aq-M8Q.
ropuJIJIa # 0 ⇈
Какой багор )))
bormand # 0 ⇈
Может. Для этого у компиляторов есть опции в духе function-level linking. Да и вообще линкеры сейчас глобальной оптимизацией кода умеют заниматься, а не просто танчики клеить.
ropuJIJIa # 0 ⇈
В формате OMF была секция COMDAT, которую создали ради «Фортрана». В «Фортране» можно было в каждом модуле объявлять глобальные переменные в блоке COMMON. При линковке блоки COMMON мерджатся в один, от каждой переменной остаётся только одна копия.
Потом секцию COMDAT стали использовать кресты для инстанцирования крестошаблонов, чтобы удалять лишние копии.
Вот «function-level linking» как раз про это. Если в разных модулях попадаются одинаковые специализации одного шаблона, то благодаря мерджингу COMDAT'ов в экзешник попадёт только одна копия.
bormand # 0 ⇈
В том числе и последнюю. Оно и для мержа и для выбрасывания, емнип, работает. Т.к. между такими секциями не будет никаких неизвестных линкеру прыжков.
ropuJIJIa # 0 ⇈
ropuJIJIa # 0 ⇈
Линкер не занимается дизассемблированием модуля. Он для этого слишком анскильный. О том, ссылаются ли функции друг на друга, он узнаёт по таблице перемещаемых данных (relocations, fixups).
Если функция ссылается на функцию из другого модуля, компилятор добавит запись в таблицу фиксапов, чтобы линкер после сборки пофиксил адрес. Если функция помечена как экспортируемая, компилятор добавит ссылку на её начало в таблицу экспорта.
Инструкции JMP SHORT, JMP NEAR, CALL NEAR, все эти jae/jg/jz... были с адресацией относительно IP ещё задолго до 64-битных процессоров, когда ещё слова «rip-based» не знали. Так вот если прыжок внутри одного модуля, то он происходит на константное расстояние, и ничего фиксить не надо, поэтому компилятор в таблицу фиксапов ничего не добавит.
Если линкер захочет выкинуть одну функцию из модуля, то поедет вся адресация. Придётся фиксить аргументы всех коротких джампов. Аргументов коротких джампов в таблице фиксапов нет, а линкер интеллектом дизассемблера не обладает. Более того, линкер не узнает, можно ли выкинуть эту функцию (вдруг на неё есть короткий джамп, который никак не помечен в таблице фиксапов).
guest # 0 ⇈
bormand # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
функциональщина-поэзия
jojaxon # 0 ⇈
guest # 0 ⇈
Зимой в лесу выпал снег. По снегу идет медведь. Холодно в лесу зимой!
public static void main
guest # 0 ⇈
jojaxon # 0 ⇈
guest # 0 ⇈
Текстов где тавтология органична — дохуя.
«Лизингодатель обязуется приобрести в собственность определённое лизингополучателем имущество у указанного им продавца и предоставить лизингополучателю это имущество за плату во временное пользование, с правом выкупа и без него».
ropuJIJIa # 0 ⇈
jojaxon # 0 ⇈
Реальные сигнатуры функций длиннющие:
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
guest # 0 ⇈
Как вообще ты попал в дэ?
jojaxon # 0 ⇈
Точно также с плюсами - после универа пописывал, потом внезапно работу по ним нашел. Авось и Ди сгодится.
ropuJIJIa # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Гораздо важнее тут (может оказаться) не сам асембррел, а понимание современного проца со всеми его режимами, вротуальной мапятью и пыр.
Ирвина я всеж таки просмотрел бы, а потом подумал про mastering assmebly language параллельно с книгами про рахитектуру писюка (mindshare, или просто мануалы интел, если смелый)
ropuJIJIa # 0 ⇈
В 32-битных процессорах добавились регистры на букву «E» плюс два новых сегментных (FS, GS). В 64-битных добавились регистры на букву «R» плюс несколько нумерных (R8, R9... R15), а также регистры-половинки sil, dil, spl, bpl (версии с буквой «h» в конце почему-то нет).
Самое сложное — это то, что связано с защищённым режимом. Вы прогали под реальный?
bormand # 0 ⇈
А что там сложного то? Для прикладнухи ничего не поменялось, только ёбли с адресами меньше стало да регистров и всяких полезных инструкций досыпали. Ну и про странички немного стоит знать - что они по 4к и не все из них можно читать, писать и исполнять.
Со стороны операционки - да, нетривиально. Но если очень глубоко в ядро не лезешь, то это не особо то и важно.
З.Ы. Можно даже дрова писать и не знать про детали защищённого режима.
guest # 0 ⇈
Защищенный ржим это много всякого: и C3, и таблцы страниц, и TLB и PAT и этот, который вместо него, все время забываю, и исключения всякие, и по два стека на поток..
bormand # 0 ⇈
CR3 и таблицы это, конечно, интересно. Но без них вполне можно прожить, умный дебаггер поможет всё это размотать и посмотреть в удобном виде.
guest # 0 ⇈
Имхо, если уж заморачиваться с асмом, то ради того, чтобы лучше понимать лоу левел пишутню.
bormand # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
ага, только их два: AT&T (ака прыщеговно) и Intel
>С железом: у процессоров семейства x86 RBP, RSP, EDI — это регистры общего назначения
Ага, только SP это еще и стек поинтер, и DI это дестинейшен индекс кое-где (емпин)
>3. Интерфейс с другим софтом.
ну и приснопамтных каловых конвенций тоже штук десять
ropuJIJIa # 0 ⇈
Таким образом, получаем:
SP — это указатель на вершину стека. Он неявно присутствует в инструкциях PUSH/POP.
DI и SI — это указатели target/source для строковых операций (они там тоже неявно).
CX в некоторых инструкциях присутствует тоже неявно, но уже в роли счётчика (LOOP, например).
AX — универсальный аккумулятор. Он неявно присутствует в умножении и делении.
DX может использоваться вместе с AX в умножении и делении, чтобы вместить значение, которое в два раза длиннее регистра.
И это я только начал. Так что да, у x86 «универсальные регистры» являются универсальными с кучей ограничений.
Но для инструкции MOV, а также для сложения, вычитания это всё универсальные регистры.
Web_Monkey # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Полезно бывает еще понять рахитектуру писи в целом, но тут уже зависит от глубины твоего познания: от "кода" Пецольда до Mindshareовских книжек можно присоветовать рразное
guest # 0 ⇈
jojaxon # 0 ⇈
С Лурка: "На самом деле, соль Ассемблера в том, что он делает ВСЁ, кроме того, что нужно. Термин «Научиться программировать на Ассемблере» (см. ассемблировать, «оседлать», «обуздать», «поработить» Ассемблер) подразумевает вывод на протяжении долгого и попабольного обучения хитроумного плана, который позволит наебать Ассемблер незаметно для него, тем самым заставив его работать на вас. Судя по всему, успеха добиваются единицы. Остальные же, которые, не понимая того, становятся рабами Вышеназванного, теряют волю, сходят с ума и, в лучшем случае, попадают в армию."
guest # 0 ⇈
Писить на нем соверешнно не обизательно
guest # 0 ⇈
jojaxon # 0 ⇈
Но она уже старая.
guest # 0 ⇈
Язык ассемблера для процессоров Intel (+ CD-ROM)
Очень хорошая книга. Чуть чуть будет классического асма под реалрежим, и потом много 32х битного.
bormand # 0 ⇈
И надо определиться, что ты хочешь с асмом делать. Основных областей сейчас три - системное программирование, пирфоманс и реверсинг.
В системном программировании асм юзается редко, но он очень специфичный. И асм там - наименьшая из проблем.
В пирфомансе для прикладнухи ты в основном будешь юзать SSE. Intel Intrinsics Guide в зубы и вперёд.
И наконец реверсинг и отладка, самая интересная область, имхо. Можно почитать какие-нибудь гайды и статьи где что-нибудь хачат, попробовать что-то подебажить самому. "Знание асма" тут вторично, компилятор не так много инструкций юзает да и большинство из них очевидные, за неделю все освоишь. Здесь в основном нужна практика. Много практики, причём с разными конпеляторами. Чтобы быстро находить важные моменты и скипать мусор и т.п. Чтобы подсознательно чувствовать, какую сишную конструкцию ты сейчас видишь перед собой.
З.Ы. Кстати, в Intel Software Developer Manual архитектура очень неплохо расписана, хоть эти гигантские тома и выглядят страшно.
guest # 0 ⇈
Лучше взять досбокс, изучить асм под реальный режим, и написать на нем змейку. Параллельно на примитивных и маленьких сущностях разберешься с регистрами, флагами, стеком, кучей, прерываниями, и основами работы с железом.
После этого уже можно изучить защищенный режим (32х битный лучше сразу) с его MMU, страницами, уровнями защиты и Генералом Протектед-Фолт и начать писать под него.
А дальше уже длиный (v86 можно пропустить).
Ну то-есть не надо начинать с Intel Intrinsics Guide, если ты спрашиваешь, что делает push RBP
bormand # 0 ⇈
А вот какая-нибудь статейка про реверсинг, где чел расскажет, что эта пара инструкций создаёт фреймы для дебаггера и покажет как они выглядят и используются в том же windbg, будет куда полезнее.
ropuJIJIa # 0 ⇈
Нужно изучать статьи про реверсинг/отладку или про совместную линковку модулей, написанных на разных ЯП, чтобы увидеть реальные примеры соглашений вызова.
bormand # 0 ⇈
gost # 0 ⇈
guest # 0 ⇈
BP идет в стек, и так сопрягается опричная гусинеица, чтобы развертить стека при в отсутствии символов.
В моем децтве питузы часто его переиспользовали, и засирали стек. Но уже лет десять как его никто не трогает
не?
gost # 0 ⇈
guest # 0 ⇈
Так как сам BP при этом клали в стек, то получалось, что BP указывает на начало предыдушего стекового фрейма. А в предыдущем стековом фрейме, по известному смещению от начала, тоже лежит BP (рядом с адресом возврата).
Таким образом стало возможно получить список фреймов из памяти с адресами функций.
Если у тебя есть символы для первой и пятой функций, то ты можешь прочитать стек фрейм, просто функции без символов для тебя будут выглядеть как адреса.
В 386 появилась возможность адресоваться от SP, и от использования BP отказались. Адерсоваться от SP менее удобно (так как он едет), но компилятору это ок (в отличие от прогаммиста). Зато BP приспособили под другие задачи (потому что регистров было мало).
Таким образом стало уже нельзя получить фрейм из памяти без наличия ВСЕХ символов.
Где-то с в районе x64, было решено, что умение получить фрейм -- важно, а регистров и так много, и BP опять стали использовать как указатель на фрейм: класть в него SP, а его самого класть в стек
Ну как, перевёл?
guest # 0 ⇈
guest # 0 ⇈
Впрочем, это мой подход. Кому-то может казаться иначе
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Правда, формально это не часть конвеншнеа: ты можешь вероятно засрать BP
bormand # 0 ⇈
guest # 0 ⇈
ropuJIJIa # 0 ⇈
Почему так прицепились именно к EBP? До 80386 не было косвенной адресации относительно регистра SP. Т. е., например, писать [SP-8] было нельзя. Нужно было использовать какой-нибудь другой регистр. Под горячую руку подвернулся BP, хотя можно было BX, SI, DI.
Потом в 80386 в 32-битном режиме стало можно использовать и ESP, но привычка осталась. Т. е. теперь можно писать [ESP-8], [RSP-8] и не думать о том, чему равен EBP/RBP.
guest # 0 ⇈
Всё верно: до 386 все были вынуждены ложить SP в BP ради косвенной адресации.
Потом петух открыл, что BP со значением SP (лежащий в стеке, там чуть ли не пуша его туда клал) позволяет развертать стек без символов.
Потом стало можно косвенно адресоваться через SP, и BP приладили для иного. Так была засрана возможность развертать стек без символов. Регистры тогда были на вес платины.
Потом регистров стало дохуя (в районе x64) и BP опять стали юзать как указатель на фрейм.
bormand # 0 ⇈
А вот будет ли он юзать ebp как обычный регистр или как указатель на начало своего фрейма - это уже зависит от настройки FPO.
guest # 0 ⇈
bormand # 0 ⇈
Перед call'ом же он ничего не сохраняет.
guest # 0 ⇈
Ты пишешь
>ebp сохраняет вызываемый
Это значт, что любая функция обязана пушнуть EBP прежде, чем в него насрать.
И именно потому он мог его пушнуть.
Так почему ты говоришь, что пушанье BP это не часть колконвеншена?
bormand # 0 ⇈
А пушанье - часть. Равно как и с ebx, edi и esi.
guest # 0 ⇈
Класть в BP указатель на стек -- добрая воля компилятора
А пушать в стек BP -- требование конвенции
ку?
gost # 0 ⇈
Конечно, в реальности используются два метода: «пушнуть в стек» и «вообще не трогать». Но, повторюсь, это не потому, что так делать требует конвенция, а потому, что так проще (быстрее, удобнее).
guest # 0 ⇈
То-есть если я просто его не трогаю, то конвенция соблюдена, а фреймпоинтеров нету
bormand # 0 ⇈
ropuJIJIa # 0 ⇈
gost # 0 ⇈
gost # 0
Какой багор )))
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
А дизайнеров очень сложно вывести из зоны комфорта фотошопа, к сожалению, потому они с тулами обычно не особо.
Кстати, мне чот кажется, что том же Анриале уже даже никаких скриптов писать не надо, для всего есть гуй.
https://docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/Variables/index.html
guest # 0 ⇈
ну гейдевки и не должны уметь: в написиньи хайлайтеров, лексеров и парсеров есть свои секреты.
guest # 0
питузы выложили в открытый доступ говно, и даже капчей не прикрыли, долбоёбы криворукие
guest # 0 ⇈
Я бы всё о долбоёбах выкладывал в открытый доступ.
В том числе об инфицированных, где и как предположительно они заразились.
ropuJIJIa # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Вроде как даже инфу по ковиду сейчас не разглашают.
И не понятно как предоставлять на работу «больничный» (ни разу не сталкивался с больничными), там написан диагноз?
bormand # 0 ⇈
jojaxon # 0 ⇈
ropuJIJIa # 0 ⇈
guest # 0 ⇈
jojaxon # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Именно по этой причине Россия такая Россия
bormand # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Stallman # 0 ⇈
guest # 0
https://echo.msk.ru/blog/aillar/2643105-echo/
gost # 0 ⇈
ropuJIJIa # 0 ⇈
Но что ещё более важно, вы должны спросить себя, а при чём тут данное дело? Да ни при чём, леди и джентльмены, это не имеет никакого отношения к данному делу. В этом нет никакого смысла!
Взгляните на меня, я адвокат, защищающий крупную звукозаписывающую компанию, и я веду речь о Чубакке. Какой в этом смысл? Леди и джентльмены, я несу бессмыслицу, во всём этом вообще нет смысла!
Итак, запомните, когда вы, сидя в этой комнате, взвешиваете и сопрягаете Декларацию независимости, есть ли в этом смысл? Нет, в этом нет смысла!
Итак, леди и джентльмены, если Чубакка живёт на Эндоре, вы обязаны вынести оправдательный приговор. Спасибо, ваша честь, я закончил.
jojaxon # 0 ⇈
jojaxon # 0 ⇈
ropuJIJIa # 0 ⇈
Вот вирус гриппа:
https://github.com/stephaneguindon/phyml/blob/master/examples/phyrex/h1n1.nxs
А тут ничего интересного, коды растений:
https://github.com/stephaneguindon/phyml/blob/master/examples/phytime/seq.txt
ropuJIJIa # 0 ⇈
https://github.com/stephaneguindon/phyml/blob/master/src/avx.c
guest # 0
guest # 0 ⇈
guest # 0
Я не заказывал позикс ацл, а вы его в своей сраной убунте по умолчанию мне прописали для ext4.
Говоят, без позикс ацл не работает системд
Поттеринг ебанутый, прыщебляди, он преващает вашу ОС в мутное неконситентное говно
Скоро прийдется уходить от нелогичного нестабильного недокументированного нагромождения неподдерживаемых говен в сторону номральных стабильный и логичных ОС типа Виндуос
guest # 0 ⇈
admin # 0
guest # 0
guest # 0
guest # 0 ⇈
Grove Street!
guest # 0
https://govnokod.xyz/_26671/