Интернет магазин китайских планшетных компьютеров



Компьютеры - Язык ассемблера - Применение

23 января 2011


Оглавление:
1. Язык ассемблера
2. Достоинства и недостатки
3. Применение
4. Синтаксис



Исторически можно рассматривать язык ассемблера как второе поколение языков программирования ЭВМ. Недостатки языка ассемблера, сложность разработки на нём больших программных комплексов привели к появлению языков третьего поколения — языков программирования высокого уровня. Именно языки программирования высокого уровня и их наследники в основном используются в настоящее время в индустрии информационных технологий. Однако языки ассемблера сохраняют свою нишу, обусловливаемую их уникальными преимуществами в части эффективности и возможности полного использования специфических средств конкретной платформы.

На языке ассемблера пишутся программы или фрагменты программ, для которых критически важны:

  • быстродействие;
  • объем используемой памяти программное обеспечение, программы для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, программные защиты).

С использованием программирования на языке ассемблера производятся:

  • Оптимизация критичных к скорости участков программ, написанных на языке высокого уровня, таком как C++. Это особенно актуально для игровых приставок, имеющих фиксированную производительность, и для мультимедийных кодеков, которые стремятся делать менее ресурсоёмкими и более популярными.
  • Создание операционных систем. ОС часто пишут на Си, языке, который специально был создан для написания одной из первых версий UNIX. Аппаратно зависимые участки кода, такие как загрузчик ОС, уровень абстрагирования от аппаратного обеспечения  и ядро, часто пишутся на языке ассемблера. Ассемблерного кода в ядрах Windows или Linux совсем немного, поскольку авторы стремятся к переносимости и надёжности, но, тем не менее, он присутствует. Некоторые любительские ОС, такие как MenuetOS, целиком написаны на языке ассемблера. При этом MenuetOS помещается на дискету и содержит графический многооконный интерфейс.
  • Программирование микроконтроллеров и других встраиваемых процессоров. По мнению профессора Таненбаума, развитие МК повторяет историческое развитие компьютеров новейшего времени. На сегодняшний день для программирования МК весьма часто применяют язык ассемблера. В МК приходится перемещать отдельные байты и биты между различными ячейками памяти. Программирование МК весьма важно, так как, по мнению Таненбаума, в автомобиле и квартире современного цивилизованного человека в среднем содержится 50 микроконтроллеров.
  • Создание драйверов. Некоторые участки драйверов, взаимодействующие с аппаратным обеспечением, программируют на языке ассемблера. Хотя в целом в настоящее время драйверы стараются писать на языках высокого уровня в связи с повышенными требованиями к надёжности. Надёжность для драйверов играет особую роль, поскольку в Windows NT и Linux драйверы работают в режиме ядра. Одна ошибка может привести к краху системы.
  • Создание антивирусов и других защитных программ.
  • Написание трансляторов языков программирования.

Связывание программ на разных языках

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

Это достигается двумя основными способами:

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


Просмотров: 5635


<<< Стековый язык
Язык проектирования >>>