169 похожих чатов

Где вынужденно применяется ассемблер? Собрал все случаи, где применяется ассемблер в

нынешнее время в одном месте!
----------------------------------------
Ассемблер активно применяется в написании (программировании):

- Драйверов (возможно применение вставками, но применять придётся. Например, для доступа к регистрам CR и т.п.)

- Микроконтроллеров и встраваемых процессоров. (особенно актуально было для прошивок старых телевизоров)

- Антивирусных ядер (для написания сложных систем распознования вредоносного ПО, требуется знать ассемблер. Пример: эвристический анализ)

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

- Игр (ассемблерные вставки и знания ассемблера используют для оптимизации критически важных для производительности участков кода. Игры, в которых использовался ассемблер: TIS-100, RollerCoaster Tycoon, Shenzhen I/O, Human Resource Machine. В нынешнее время сами разработчики игр редко используют ассемблер, однако он активно используется разработчиками игровых движков, таких как Unity, CryEngine и др.)

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

- Виртуальные машины / эмуляторы. Виртуальные машины тесно взаимодействуют с ОС, поэтому частично написаны на ассемблере. Как, например, LLVM или Surface Duo Emulator.

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

- Вредоносное ПО. Шифровальщики, и т.п. Проекты такого рода, как и системы защиты ПО, могут использовать сложные алгоритмы шифрования и самомодифицирования кода. Хотя, в нынешнее время очень редко, но на рынке будет сильно цениться как знания, так и работы с использованием ассемблера, а вирусные аналитики знатно попотеют.

[В тексте задействованы только случаи, в которых вынужденно применяют ассемблер в нынешнее время. Конечно, на ассемблере можно написать абсолютно всё то же, что и на ЯВУ.]

#faq

45 ответов

4 просмотра

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

Спасибо

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

Да?

КТ315- Автор вопроса
楽園松本
Да?

Да, на 1000%. Кто не согласен - значит ему не в этот чат.

КТ315
Да, на 1000%. Кто не согласен - значит ему не в эт...

Слово "вынужденно" следует понимать как "под пытками, вопреки здравому смыслу, заставляют"

КТ315- Автор вопроса
楽園松本
Слово "вынужденно" следует понимать как "под пытка...

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

Давай разберём это снова. Если выкинуть ложные утверждения и случаи, когда ассемблер нужно знать, а не писать на нём, то останутся древнее железо (для развлечения) и свой язык программирования (видимо тоже). И то, для второго лучше знать LLVM.

Будет ли плюсом опыт на асме для софтвейр инженера?

КТ315- Автор вопроса
s54820
Давай разберём это снова. Если выкинуть ложные утв...

Ах да, у нас эмуляторы и виртуальные машины теперь чисто для развлечения. Интересненько... Про системы защиты ПО ты успешно пропустил, и... что там ещё было? Драйверы с асмовставками\интрисинками. По-твоему, разработчики должны вслепую тыкать какой-то интрисинк, даже не зная, что это означает?

Ghost
Будет ли плюсом опыт на асме для софтвейр инженера...

возможно, если дело будет с нативным софтом

КТ315
Ах да, у нас эмуляторы и виртуальные машины теперь...

Эмуляторы и виртуальные машины не пишут на асме. Они могут генерить машинный код, могут читать машинный код. Но писать их на асме можно только для развлечения. Асмовставки уже написаны, тебе не нужно знать о том, что там внутри. Ты используешь готовый макрос или функцию. Документация пишется не к асму, а к этой функции. Например state = interrupts_disable(); ... intertupts_restore(state);. Видишь асм? И я не вижу. Может он там есть, может нет. Системы защиты ПО, написанные не в 90х и/или не школьниками, которые макросами заменяют mov на xor, чтобы вирустотал не ругался, пишутся не на асме.

Mixail Frolov
возможно, если дело будет с нативным софтом

Я имею ввиду прохождение собеседований, понимание программирования в целом

Ghost
Я имею ввиду прохождение собеседований, понимание ...

Меня бы интересовало, насколько быстро ты начнёшь мне генерировать деньги.

Ghost
Программисты не генерируют деньги

А нафиг они сдались? Охлаждать их в офисе кондиционерами?

КТ315- Автор вопроса
s54820
Эмуляторы и виртуальные машины не пишут на асме. О...

Я не говорил, что их пишут на ассемблере. Я сказал, что его там вынужденно применяют (асмовставки\интрисинки), и его нужно знать, ВЫНУЖДЕННО, потому что без него не напишешь тот самый эмулятор\ту самую виртуальную машину. Насчёт интрисинков - как по-твоему разработчик должен узнать, что есть такой интрисинк? Он сначала гуглит "как включить прерывание?", и находит интринсик, который ссылается на команду на ассемблере. Но это мы ещё пропустим тот момент, как он вообще дошёл до прерываний, не зная ассемблера)) И не надо коверкать! Интринсики не так выглядят, а вот так примерно - __builtin_infq, то есть почти полностью копируя имя команды на ассемблере.

КТ315
Я не говорил, что их пишут на ассемблере. Я сказал...

Я загуглил про прерывание. https://learn.microsoft.com/en-us/azure/rtos/threadx/chapter4#tx_interrupt_control Где мне узнать команду на ассемблере?

КТ315
Я не говорил, что их пишут на ассемблере. Я сказал...

Давай ещё раз. Ты пишешь про применение. Я говорю про знание. Если у тебя где-то рядом пробегает машинный код, то знать асм конечно надо. Но знать != писать.

КТ315- Автор вопроса
КТ315- Автор вопроса
s54820
Давай ещё раз. Ты пишешь про применение. Я говорю ...

Знать = применять, и НЕ ВСЕГДА = писать, но зачастую обрывками писать придётся. Нормальный человек, который использует интринсик, знает, что это команда на ассемблере, и только благодаря ассемблеру, он сейчас пишет эту программу.

Что? Ты назвал llvm виртуальной машиной/эмулятором? Подскажи, а что конкретно ssa эмулирует?

КТ315- Автор вопроса
КТ315
Иди почитай, что такое LLVM.

Тебя не смущает, что от этой расшифровки они открестились лет 10 назад?

КТ315- Автор вопроса

👍

КТ315
Нет.

Окей, тогда я открою тебя глаза, что llvm это компилятор, вот так чудо.

КТ315- Автор вопроса
Денис Rabbit
Окей, тогда я открою тебя глаза, что llvm это комп...

Лучше измерь в процентном соотношении, насколько мне пофиг.

КТ315- Автор вопроса
Денис Rabbit
А ересь писать тебе не пофиг?

Нет, потому что эту часть я скопировал у статьи от @jin_x Остальную часть я дописал сам.

КТ315
screenshot Нет, потому что эту часть я скопировал у статьи от...

Тебе не режет глаз фраза "виртуальные машины тесно взаимодействуют с ОС, ПОЭТОМУ частично написаны на ассемблере"?

КТ315- Автор вопроса
楽園松本
Тебе не режет глаз фраза "виртуальные машины тесно...

А что тут должно резать? В виртуальных машинах используются kernel-mode драйвера различные для "пробрасывания" портов, и это частично всё написано на ассемблере (асмовставки\интринсики), так что нет, ничего не режет, всё правильно)

КТ315
А что тут должно резать? В виртуальных машинах исп...

У меня был курс писания, ПОЭТОМУ я очень чувствителен к такого рода оборотам.

The Bird of Hermes
Может курс письма?...

Writing, там упор делается на связанность и аргументирование.

КТ315
screenshot Нет, потому что эту часть я скопировал у статьи от...

Это не моя статья. Из моего там только несколько цитат (и та, что на слайде — не моя). LLVM хоть и называется виртуальной машиной, но по факту таковой не является. Не знаю почему автор привёл в пример Surface Duo Emulator и LLVM, а не JVM и CLR, например. Вообще говоря, статья написана не специалистом в низкоуровневом программировании.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта