@Qreen
Разъяренный питонист

Для чего вообще существует ассемблер?

Для чего сейчас существует ассемблер? Раньше, когда на нём писали драйвера и загрузчики для систем, а также низкоуровневые задачи, то что на нём пишут сейчас? Uefi может запускать .efi pe файлы, написанные на си, драйвера тоже на си пишутся, а так как си, если я не ошибаюсь, компилируется сначала в асм, а потом в бинарник, получается, что ассемблер тупо становится не нужен
  • Вопрос задан
  • 291 просмотр
Решения вопроса 2
SagePtr
@SagePtr
Еда - это святое
Если нужно получить на выходе какой-то определённый код, не боясь, что компилятор или оптимизатор высокоуровнего ЯП его "перефразирует" своими инструкциями. В 99.99% случаев это не нужно.
Ответ написан
Комментировать
mikhanoid
@mikhanoid
1. Нужно текстовое представление машинного кода, чтобы с ним можно было удобно работать, а не править битики в hexdump-ах.

2. Если вам надо писать прям очень оптимизированный код, вы будете делать это на intrinsic-конструкциях в Си или Си++, но это почти тот же ассемблер с щепоткой синтаксического сахара.

3. Хоть и считается, что у Си или Rust нет никакого runtime, но он там есть, как минимум, нужно настроить стеки, вектора прерываний и всякое такое прочее, машинно зависимое. И это придётся писать на ассемблере.

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

Как минимум, для всего этого ассемблер нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ValdikSS
@ValdikSS
Ассемблер активно используется для:
* SIMD-оптимизаций в наиболее сложных задачах: кодирование и декодирование видео, эмуляции других архитектур (например, игровых приставок на компьютере)
* Написания (части) низкоуровневого кода для процессоров: бутромы, прошивки, и т.п.
* Создания того же UEFI под конкретную архитектуру/чипсет
Ответ написан
Комментировать
longclaps
@longclaps
так как си, если я не ошибаюсь, компилируется сначала в асм, а потом в бинарник,
Да, бывает.
получается, что ассемблер тупо становится не нужен
Нет. Файл.асм сам себя в бинарник не скомпилирует.
Ответ написан
Комментировать
@none7
Все алгоритмы openssl реализованы на Ассемблере. Потому, что оптимизирующие компиляторы генерируют не оптимальный код. Речь даже не про SIMD, самые простые инструкции при весьма ограниченном количестве переменных, компиляторы не в с состоянии расставить в идеальном порядке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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