Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Что написать на асме

да чел просто занимается хуйней какой-то грубо говоря, хочет сам управлять регистрами, памятью и оптимизацией, в целом контролировать весь процесс, однако на контроль всего процесса у него уйдет чуть ли не вся жизнь на большом проекте, нахуя? зачем? - потому что я дохуя крутой специалист на асм и ваши C++/Go мне в хуй не дули
По факту ты прав, но с++ и go(я за go не шарю). Но в с++ есть умные указатели и в них нужно не так долго времяни что бы разобраться. А вообще Гарбич Каллектор не такой уж и хороший как ты думаешь. Но если ты просто Back-End разработчик тебе и нахуй не надо об этом думать)
 
единственное, что я могу тебе порекомендовать, так это немножечко отдохнуть и полечиться. асм на тебя плохо влияет.
даже если ты каким то хуем напишешь супер оптимизированный код на твоем любимом асме, то пару мс по сравнению с C разницы тебе не сыграют
 
я практикуюсь, пишу мини-проекты по типу антивирусных сканеров, работа с натив апи, драйверы, чет на уровне uefi(и я за все это время не засомневался в асме). я тупо не знаю какой большой проект реализовать можно вот его и нет.
и я объясню тебе, почему на мне надеты "розовые очки", все потому-что в моем окружении почти все кодят на асме и уж так случилось, что у меня нету иллюзии про которую ты пишешь
А есть пример этих самых проектов ? А то ты же сейчас выглядишь просто как-будто клоун, который очень потешно пытается оправдать свою х2 трату времени написания проектов на асме вместо любого другого языка. К тому же и совершенно не знаком с тем как работают обычные программы и компиляторы.
 
ACME — A Company Making Everything, что в переводе означает «Компания, которая производит всё». Термин обрёл свою популярность благодаря франшизе Looney Tunes.
 
ну,я же говорю, если речь про сравнении скорости и оптимизаций(а речь про это) - тогда на генерировании мусора можно остановиться
изначально не понял зачем ты начал оффтопить тему, если банально не знаешь про ооп паттерны, не знаешь про генерацию кода от компилятора, никогда не писал на асме прогу больше чем калькулятор.

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

ну вот и задачка

окей, сделаю
с завтрашнего дня начну писать
То что ты напишешь асм код лучше чем компилятор это полный бред, ты никогда не напишешь код лучше чем это сделает clang с llvm (удачи делать раскрутку цикла вручную на 100 итераций). И почему если писать на ассемблере так пиздато то почему основной язык ядра линукса это си? Почему игры делают на C# и на C++?
 
1763325727018.png


Человек даже не знает что есть у CL макс /O2.
И этот человек всё равно умнее и cl и g++ и clang++ вместе взятых.
Нужно не забывать снять штаны перед тем как обосраться.

Сейчас на ассемблере писать всё буду - точно быстрее будет.

1763326240054.webp
 
Есть один мастер ассемблера, зовут его TraitCore, так вот максимально что ты сможешь сделать похожее на ASM и чтобы оптимизация оставалась на уровне, это то что сделал он, чистый pure C и вот как это будет выглядеть:
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Удачи.
 
тем хуже делаешь себе, тем больше времени ты убиваешь на написание, в силу неопытности соответственно будет куча ошибок, которых бы можно было избежать при кодинге на сишке или плюсах, если конечно тебе не впадлу выкидывать время, то пожалуйста
Да….
Программист на ассемблере убивает себе время, в силу неопытности.
Ты словил UAF, виноват язык, а не ты, правильно мыслишь.

Вместо того, чтобы изучить все известные уязвимости и не допускать их в своем продукте - мы будем в силу неопытности допускать их.
увы, ты не похож на человека, который умнее компилятора и лучше знает, как именно оптимизировать свой код, особенно на ассемблере, соответственно там, где ты проморгаешь возможность оптимизации -
Да друг, программист на ассемблере не знаком с SSE/AVX, мы не умеем оптимизировать программы…

Я тебя разочарую, программист на ассемблере может оптимизировать в разы лучше компилятора.

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

Я с уверенностью могу оптимизировать свою программу через SSE/AVX, например в цикле, прочитать 16 байт и сделать защиту в виде скалярного прохода если осталось < 16, в то время как С-шник надеется на то, что дай боже компилятор выберет верный выбор инструкций и вместо условно repnse scasb, или что еще хуже побайтового цикла, оптимизирует программу адекватно.

Даже был момент, когда компилятор решил не использовать SSE2, а пройтись в цикле побайтово по каждому символу когда можно было воспользоваться оптимизацией…
Было это все при -О2.
после этого у меня не осталось к тебе вопросов, ты даже не знаешь что компилятор пихает в экзешник и для чего именно это делает, ты выдумал какие-то ООП паттерны без знаний о том, что это вообще и для чего нужно, приводить в примерчик программу на хелло ворлде на масме, где у тебя сразу энтрипоинт на функции вывода строчки в консоль, и семпл скомпилированном на любом С++ компиляторе, где у тебя энтрипоинт будет в стартап коде для инициализации CRT (да бы у тебя работали сех с тлс, вызывались глобал конструкторы и прочая шняга нужная для корректной работы крупной программы, где уже реально напичкано ООП) это неправильное сравнение
Да, согласен.
С++ лучше ассемблера, особенно обожаю std который генерирует оооочень много мусора от которого бинарник буквально жирнеет, подумаешь, что даже даже в релиз режиме очень много заголовков тянет за собой iostream.

Подумаешь, ради вывода на консоль чего-то, ты буквально подключаешь тысячи строк кода… Но ассемблер все равно дерьмо!!
Ассемблер разработчик не сможет написать с нуля свою оптимизированную библиотеку где такого не будет, С++ лучше.
А есть пример этих самых проектов ? А то ты же сейчас выглядишь просто как-будто клоун, который очень потешно пытается оправдать свою х2 трату времени написания проектов на асме вместо любого другого языка. К тому же и совершенно не знаком с тем как работают обычные программы и компиляторы.
Опытный программист на ассемблере будет писать код на уровне С-программиста по времени.
 
Последнее редактирование:
Да….
Программист на ассемблере убивает себе время, в силу неопытности.
Ты словил UAF, виноват язык, а не ты, правильно мыслишь.

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

Да друг, программист на ассемблере не знаком с SSE/AVX, мы не умеем оптимизировать программы…

Я тебя разочарую, программист на ассемблере может оптимизировать в разы лучше компилятора.

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

Я с уверенностью могу оптимизировать свою программу через SSE/AVX, например в цикле, прочитать 16 байт и сделать защиту в виде скалярного прохода если осталось < 16, в то время как С-шник надеется на то, что дай боже компилятор выберет верный выбор инструкций и вместо условно repnse scasb, или что еще хуже побайтового цикла, оптимизирует программу адекватно.

Даже был момент, когда компилятор решил не использовать SSE2, а пройтись в цикле побайтово по каждому символу когда можно было воспользоваться оптимизацией…
Было это все при -О2.

Да, согласен.
С++ лучше ассемблера, особенно обожаю std который генерирует оооочень много мусора от которого бинарник буквально жирнеет, подумаешь, что даже даже в релиз режиме очень много заголовков тянет за собой iostream.

Подумаешь, ради вывода на консоль чего-то, ты буквально подключаешь тысячи строк кода… Но ассемблер все равно дерьмо!!
Ассемблер разработчик не сможет написать с нуля свою оптимизированную библиотеку где такого не будет, С++ лучше.

Опытный программист на ассемблере будет писать код на уровне С-программиста по времени.
Ты смешиваешь несколько разных вещей: язык, компилятор, квалификацию разработчика и класс задачи.


1. UAF и «виноват язык»​


Use-After-Free — это ошибка управления временем жизни объекта.
Она возможна:


  • в C
  • в C++
  • в Rust (через unsafe)
  • в ассемблере
  • в любом языке без строгой модели владения

Язык не виноват. Виновата модель памяти и дисциплина разработчика.




2. «Ассемблер всегда оптимизирует лучше компилятора»​


Это частично верно, но только:


  • на узких горячих участках
  • при глубоком понимании микроархитектуры
  • если человек реально знает pipeline, uop-cache, latency/throughput

Современные компиляторы (GCC, Clang, MSVC):


  • знают конкретную микроархитектуру
  • умеют auto-vectorization
  • делают instruction scheduling
  • делают register allocation лучше 95% людей
  • используют PGO / LTO

В общем случае человек не обгонит компилятор системно.
Он может выиграть локально.




3. SSE/AVX «вручную лучше»​


Да, можно написать:


  • SIMD-блок
  • scalar tail
  • branchless сравнение
  • prefetch

Но:


  • В C++ есть intrinsics
  • Есть auto-vectorization
  • Есть std::memchr / std::memcmp, которые уже написаны вручную на asm в libc
  • Есть ifunc dispatch по CPU

Писать свой memchr ради эго — бессмысленно.




4. «std раздувает бинарник»​


Это не проблема языка.


Это:


  • выбор iostream вместо printf
  • отсутствие -Os / -s
  • отсутствие -ffunction-sections + --gc-sections
  • отсутствие link-time optimization

C++ не = iostream.


Можно писать без STL вообще.
Можно писать freestanding.




5. Производительность vs. разработка​


Главный момент:


Ассемблер:


  • максимум контроля

  • минимальная абстракция
  • огромная стоимость поддержки
  • сложность portability
  • высокая цена ошибок

C++:


  • 95% производительности
  • кратно быстрее разработка
  • проще поддержка
  • кросс-платформенность

В индустрии выигрывает не тот, кто пишет на asm, а тот, кто:


  • делает профилирование
  • оптимизирует bottlenecks
  • понимает архитектуру
  • минимизирует сложность



6. Реальный инженерный подход​


Правильная модель такая:


  1. Пишем на C/C++.
  2. Профилируем.
  3. Если hot-spot реально критичен — пишем asm или intrinsics.
  4. Всё остальное — не трогаем.

Именно так пишутся:


  • игровые движки
  • криптобиблиотеки
  • ядра ОС
  • high-frequency trading системы



7. Ключевой тезис​


Ассемблер — это инструмент.


Он не «выше» и не «ниже».
Он просто:


  • сложнее
  • дороже
  • уже нишевее

Писать всё на asm — это не про оптимизацию.
Это про идеологию.
 
Да….
Программист на ассемблере убивает себе время, в силу неопытности.
Ты словил UAF, виноват язык, а не ты, правильно мыслишь.

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

Да друг, программист на ассемблере не знаком с SSE/AVX, мы не умеем оптимизировать программы…

Я тебя разочарую, программист на ассемблере может оптимизировать в разы лучше компилятора.

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

Я с уверенностью могу оптимизировать свою программу через SSE/AVX, например в цикле, прочитать 16 байт и сделать защиту в виде скалярного прохода если осталось < 16, в то время как С-шник надеется на то, что дай боже компилятор выберет верный выбор инструкций и вместо условно repnse scasb, или что еще хуже побайтового цикла, оптимизирует программу адекватно.

Даже был момент, когда компилятор решил не использовать SSE2, а пройтись в цикле побайтово по каждому символу когда можно было воспользоваться оптимизацией…
Было это все при -О2.

Да, согласен.
С++ лучше ассемблера, особенно обожаю std который генерирует оооочень много мусора от которого бинарник буквально жирнеет, подумаешь, что даже даже в релиз режиме очень много заголовков тянет за собой iostream.

Подумаешь, ради вывода на консоль чего-то, ты буквально подключаешь тысячи строк кода… Но ассемблер все равно дерьмо!!
Ассемблер разработчик не сможет написать с нуля свою оптимизированную библиотеку где такого не будет, С++ лучше.

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

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

есть идейки?

asm masm
Напиши эвристику для антивируса на асемблере. Я думаю будет интересно.
 
Да….
Программист на ассемблере убивает себе время, в силу неопытности.
Ты словил UAF, виноват язык, а не ты, правильно мыслишь.

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

Да друг, программист на ассемблере не знаком с SSE/AVX, мы не умеем оптимизировать программы…

Я тебя разочарую, программист на ассемблере может оптимизировать в разы лучше компилятора.

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

Я с уверенностью могу оптимизировать свою программу через SSE/AVX, например в цикле, прочитать 16 байт и сделать защиту в виде скалярного прохода если осталось < 16, в то время как С-шник надеется на то, что дай боже компилятор выберет верный выбор инструкций и вместо условно repnse scasb, или что еще хуже побайтового цикла, оптимизирует программу адекватно.

Даже был момент, когда компилятор решил не использовать SSE2, а пройтись в цикле побайтово по каждому символу когда можно было воспользоваться оптимизацией…
Было это все при -О2.

Да, согласен.
С++ лучше ассемблера, особенно обожаю std который генерирует оооочень много мусора от которого бинарник буквально жирнеет, подумаешь, что даже даже в релиз режиме очень много заголовков тянет за собой iostream.

Подумаешь, ради вывода на консоль чего-то, ты буквально подключаешь тысячи строк кода… Но ассемблер все равно дерьмо!!
Ассемблер разработчик не сможет написать с нуля свою оптимизированную библиотеку где такого не будет, С++ лучше.

Опытный программист на ассемблере будет писать код на уровне С-программиста по времени.
ну и бред...
 
Ты смешиваешь несколько разных вещей: язык, компилятор, квалификацию разработчика и класс задачи.


1. UAF и «виноват язык»​


Use-After-Free — это ошибка управления временем жизни объекта.
Она возможна:


  • в C
  • в C++
  • в Rust (через unsafe)
  • в ассемблере
  • в любом языке без строгой модели владения

Язык не виноват. Виновата модель памяти и дисциплина разработчика.



.
Своим нейровысором, ты подтвердил мои слова…
Ты смешиваешь несколько разных вещей: язык, компилятор, квалификацию разработчика и класс задачи.


1. UAF и «виноват язык»​


Use-After-Free — это ошибка управления временем жизни объекта.
Она возможна:


  • в C
  • в C++
  • в Rust (через unsafe)
  • в ассемблере
  • в любом языке без строгой модели владения

Язык не виноват. Виновата модель памяти и дисциплина разработчика.




2. «Ассемблер всегда оптимизирует лучше компилятора»​


Это частично верно, но только:


  • на узких горячих участках
  • при глубоком понимании микроархитектуры
  • если человек реально знает pipeline, uop-cache, latency/throughput

Современные компиляторы (GCC, Clang, MSVC):


  • знают конкретную микроархитектуру
  • умеют auto-vectorization
  • делают instruction scheduling
  • делают register allocation лучше 95% людей
  • используют PGO / LTO

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

Регистренные аллокации выполняет кодогенератор после IR, а это вообще при чем?
Компилятор хранит в регистрах лишь часто используемые переменные, что может делать и ассемблер разработчик…
.




3. SSE/AVX «вручную лучше»​


Да, можно написать:


  • SIMD-блок
  • scalar tail
  • branchless сравнение
  • prefetch

Но:


  • В C++ есть intrinsics
  • Есть auto-vectorization
  • Есть std::memchr / std::memcmp, которые уже написаны вручную на asm в libc
  • Есть ifunc dispatch по CPU

Писать свой memchr ради эго — бессмысленно.
Да, только у тебя в любом случае будет надежда на компилятор, в зависимости как он оптимизирует функцию, так она и выполнится.

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

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

А когда подобный человек которого ты описываешь - пишущий на ЯВУ попытается реверснуть продукт, а там он на ассемблере оказывается, и арифметические операции над вещественными числами через FPU, какова будет его реакция? Я +- картину представил, из-за абстракций ЯВУ он ничего не поймет.

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




4. «std раздувает бинарник»​


Это не проблема языка.


Это:


  • выбор iostream вместо printf
  • отсутствие -Os / -s
  • отсутствие -ffunction-sections + --gc-sections
  • отсутствие link-time optimization

C++ не = iostream.


Можно писать без STL вообще.
Можно писать freestanding.

А зачем ты тогда в своем 3 примере используешь std из iostream? xd
 
Последнее редактирование:
Назад
Сверху Снизу