Текущее использование
Всегда были дебаты о полноценности и работе ассемблера относительно языков высокого уровня, хотя он и получает меньшее внимание на сегодняшний день. У ассемблера есть определенное использование ниши там, где это важно. Но вообще, современные компиляторы оптимизации, как утверждают, отдают языки высокого уровня в кодекс, который может бежать с такой скоростью, как рукописное собрание, несмотря на некоторые контрпримеры, которые могут быть созданы. Сложность современных процессоров делает эффективную ручную оптимизацию все более и более трудной. Кроме того, увеличение работы процессора означает, что большинство центральных процессоров сидит большую часть времени с задержками, вызванными предсказуемыми узкими местами, такими как операции ввода / вывода и оповещение. Это заставило сырое кодовое выполнение ускорить надуманный вопрос для большинства программистов.
Есть действительно только горстка ситуаций, где сегодняшние опытные практики выбрали бы ассемблер:
Когда автономный выполнимый набор из двух предметов требуется, то есть тот, который должен выполнять без оборота к компонентам во время выполнения или библиотекам, связанным с языком высокого уровня. Это - возможно самая общая ситуация. Они - вложенные программы, которые хранят только маленькое количество памяти, и устройство предназначено, чтобы сделать единственные задачи цели. Такие примеры состоят из телефонов, автомобильного топлива и систем воспламенения, кондиционируя системы управления, системы безопасности и датчики.
Взаимодействуя непосредственно с аппаратными средствами, например в водителях устройства.
Используя определенные для процессора инструкции, не эксплуатируемые или доступные для компилятора. Общий пример - bitwise инструкция вращения в ядре многих алгоритмов шифрования.
Вложенные системы.
Когда чрезвычайная оптимизация требуется, например, во внутренней петле в интенсивном процессором алгоритме.
Когда системы с серьезными ограничениями ресурса (например, вложенная система) должны быть закодированы рукой, чтобы максимизировать использование ограниченных ресурсов.
Когда никакой язык высокого уровня не существует, например, на новом или специализированном процессоре.
Программы в реальном времени, которые нуждаются в точном выборе времени и ответах, таких как моделирования, системы навигации полета и медицинское оборудование.
Когда полный контроль над окружающей средой требуется.
Сочиняя компьютерные вирусы, определенных водителей устройства, или другие пункты очень близко к аппаратным средствам или операционной системе низкого уровня.
Перепроектируя существующие наборы из двух предметов, которые могут или не могли быть первоначально написаны на языке высокого уровня.
Ассемблер все еще используется для того, чтобы писать игры и другое программное обеспечение для того, чтобы изобразить калькуляторы в виде графика.
Наконец, авторы компилятора обычно пишут программное обеспечение, которое производит кодекс собрания, и поэтому должно быть известно опытным программистам ассемблера непосредственно.
Однако, ассемблер все еще преподается в большинстве Электронных Технических программ. Хотя малое количество программистов сегодня регулярно работают с ассемблером как инструментом, основные понятия остаются очень важными. Такие фундаментальные темы как двоичная арифметика, распределение памяти, обработка стека, кодирование набора символов, обработка перерыва, и проект компилятора были бы трудными для обучения подробно без схватывания того, как компьютер работает на уровне аппаратных средств. Так как поведение компьютера существенно определяется его набором команд, логический способ узнать, что такие понятия должны изучить ассемблер. У большинства современных компьютеров есть подобные наборы команд.