Вообще грустно, асм он как Хаскель - абсолютно не нужен, но разобравшись в нём ты станешь чуточку лучше и больше поймешь в своих питонах.
ахахахахахахахахаха
не нужен )))
ахахахахахах
если в мире все внезапно забудут как програмировать на асемблере - все рухнет
не будут выпускатся новые железки
не будут выпускатся обновы и патчи на то что уже есть
тебе в порядке важности или в алфавитном??
загугли если так интересно
серьезно, дохерише всего пишется на низком уровне
я знаю компании которые ТОЛЬКО на асемблере пишут и там у них штат в сотни людей по всему миру
то что в вашем мировоззрении не используется асемблер не означает что он вообще не нужен
это так же как говорить что бензин не нужен потому что я им не пользуюсь
юмор в том что текущая "стабильность" это постоянное развитие
если все станет то начнется деградация
вылез к примеру какой то мелкий баг на уровне железа, а поправить его некому
а это очень важная железка, к примеру система стабилизации самолета
сейчас 80% продуктов выпускаются с ожиданием того что они в дальнейшем будут допиливатся и обновлятся
железки которые на выходе 100% готовы и не будут обновлятся требуют на порядок больше трудозатрат (и то потом один хрен выпускают патчи и обновления)
так что если такое произойдет, то добро пожаловать в вархамер
только дух машины и поможет
да
хотя нет
сначата те кто с fpga работает а затем только те что напрямую
хотя...
хм
я как то вникал в ту тему, там не особо заморачиваются с логикой процесса
больше с физикой
черный ящик
есть входные данные и есть патерн как отдавать от этого и отталкиваются
Ну программировал я контроллеры пару лет, некоторые из них даже довольно специфичные были. За все время написал 3 строки на ассемблере, и то это было чтоб сделать свой загрузчик без костылей.
По этой причине половина математической библиотеки GO написана на асме, им просто было скучно.
Ассемблер не востребован на постсоветском пространстве, потому что его IT рынок вторичен, он живет и пользуется продуктами первого мира и не испытывает потребности писать на ассемблере. Все что ему надо уже сделано в первом мире.
Написание вручную програм на языке ассемблера широко не востребовано, потому что компиляторы гораздо лучше оптимизируют, чем человек.
Есть отдельные исключения под узкие задачи, но массово это нафиг никому не нужно.
Не бывает компилятора папы и компилятора мамы у которых рождается компилятор гений. Если компилятор чтото круто оптимизирует то это потому что какой то крутой чел знающий ассемблер вдоль и поперек написал этот код оптимизации.
Ассемблер не востребован в IT второго мира к которым можно отнести постсоветское пространство, потому как оно живет за счет решений первого мира. Там пишут компиляторы и придумывают языки программирования.
Здесь все это лишь потребляют.
Для написания компилятора надо знать архитектуру процессора, пайплайн, как работает предсказания, параллелизм, работу гипертриденга, расширения, модели памяти и собственно саму теорию разработки компиляторов.
X86 ассемблер это такая мелочь, которая особо и плюсов не даст.
п.с.
В математических библиотеках ассемблер используют как раз в качестве костыля чтобы максимально подходящие расширения процессора задействовать. Никто в здравом уме математику на асме не пишет, в основном Фортран.
п.п.с.
Компиляторы в РФ, кстати, пишут. Те же мцст и Эксельсиор.
Ты осознаешь что ты противоречишь сам себе?
Ты перечислил процессорные потроха и увенчал все это заявлением что для работы с ними знание ассемблера не нужно от слова совсем.
Ты чувствуешь логическое противоречие в своих словах?
Нет, не чувствую, знание потрохов процессора не даёт умение писать на ассемблере, умение писать на ассемблере не даёт знания потрохов процессора. Понятия не эквивалентны.
Я сказал не то, что знание ассемблера не нужно, а то, что знание ассемблера и разработка оптимизирующего компилятора это как знать алфавит и уметь писать книги. Если ты знаешь ещё три алфавита понту от этого особо нет.
В целом да, но есть отдельные люди которые и на асме пишут и языки свои или нишевые делают. Лично знаю человека который активно участвовал в разработке языка Nim и пропихнул проект на нём в компании. Наверное просто программистов меньше, а лучшие сваливают при первой же возможности на запад.
Почитай побольше про оптимизацию компиляторов и поищи там ассемблер:
https://ru.m.wikipedia.org/wiki/Оптимизирующий_компилятор
https://ru.m.wikipedia.org/wiki/Категория:Оптимизации_компилятора
Только начал читать и сразу же прочитал про необходимость просматривать код для поиска возможности замены одних ассемблерных команд на другие.
Ты хотел помочь мне привести примеры что я прав?
Ладно, про низкоуровневую ок, прочитай остальные 99% статьи. Про то же SSA и автоматическое распараллеливание например.
https://habr.com/ru/company/badoo/blog/317864/
Вроде уважаемая контора а какой то глупостью занимаются, свой ассемблер придумывают, прям как microsoft, те тоже зачем то придумали MASM и зачем то все продолжают и продолжают его поддерживать.
Ты им позвони и скажи что они забыли про космическую радиацию.
Ты слегка не понял какой ассемблер они придумали. У них что-то типа CIL или LLVM, платформонезависимая обёртка над псевдоассемблером в который они компилируют код. Этот псеводассемблер к железу не привязан если что.
А потом они уже прогоняют через ассемблер для конкретной архитектуры.
Этот псевдо ассемблер максимально к нему приближен к реальному так чтобы при конвертации из платформа независимого ассемблера в платформа зависимый одной псевдо инструкции соответствовала максимум две три реальных инструкции.
Смотри какое просто логическое построение: каким бы абстрактным и высоко уровневым не был бы язык программирования всегда наступает момент когда он должен быть переведен в машинный код и тут ты можешь выбрать два пути ты можешь для каждого языка писать новый компилятор а можешь написать для языка препроцессор который будет любой язык переводит в языко независимый формат (чувствуешь как байто кодом запахло) и этим "промежуточным" языком естественным образом является ассемблер.
Подавляющие большинство IDE конвертирует текст программы с ЯВУ а Асм а его отсылает в компилятор, который в таком случае может быть один для всех языков.
VS даже есть настройка чтобы сохранить этот промежуточный файл. Если его открыть там сотни тысяч строк ассемблерного кода
Там же в комментах прикладывали, он не приближен совсем https://github.com/golang/go/tree/master/src/crypto/aes
Да и как ты собираешься адекватно sse3 на arm двумя-тремя инструкциями реализовывать?
Поэтому в .net и есть такая штука, максимально абстрактный псевдоассемблер, который при первом запуске компилируется в настоящий с учётом оптимизации под железо.
Ты путаешь ассемблер и штуки типа байт-кода LLVM. И ловко ты 99% логики компилятора назвал препроцессором.
И компилирует не ide а компилятор, и компилятор в msvc конвертирует напрямую в двоичные файлы .obj им строковое представление нахрен не упало, а у тебя скорее всего просто через дизассемблер открываются.
А то что собирает код на ассемблере в бинарный называется не компилятор, а ассемблер.

IT-юмор
7.1K постов53.2K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору