Вход в систему

Лекции по курсу "Проектирование ассемблеров, компоновщиков, макропроцессоров"

2. Причины неиспользования языка ассемблер

 

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

  1. Время разработки. Написание кода на ассемблере требует гораздо больше времени, чем при использовании языков высокого уровня.

  2. Безопасность и надёжность. Очень просто допустить ошибку в ассемблерном коде. Ассемблер не будет контролировать сохранность регистров и переменных, если вызываемая вами функция будет их менять. Никто не скажет вам, что количество положенных в стек данных с помощью функции PUSH, не соответствует количеству выбранных данных из стека функцией POP, или, что их размерности не совпадают. А также существует возможность появления скрытых ошибок, которые невозможно выявить без систематического тестирования и отладки.

  3. Отладка и проверка. Ассемблерный код достаточно сложно отлаживать и проверять, потому что он менее чувствителен к ошибкам, чем языки высокого уровня.

  4. Удобство сопровождения. Ассемблерный код сложно модифицировать и сопровождать, так как он может напоминать смешанное спагетти и содержать разные хитрые трюки, которые сложно понять любому.

  5. Переносимость. Ассемблерный код очень машинозависимый. Переносить его на различные платформы очень сложно.

  6. Системный код можно реализовать на встроенном ассемблере. Лучшие С++-компиляторы имеют возможность доступа к прерываниям, регистрам, и другим системным ресурсам, через использование встроенного ассемблера. Ассемблерный код не так часто нужен при написании драйверов и системных вызовов, и может быть заменён встроенным ассемблером по мере необходимости.

Введение
Причины использования языка ассемблер
Причины неиспользования языка ассемблер
Синтаксис ассемблера
Системное программное обеспечение и структура ЭВМ
Программная модель процессора Intel 8086
Организация работы памяти
Операнды
Адресация операндов
Формат машинных команд
Команды переходов
Типы ассемблеров. Функции ассемблера
Ассемблер по схеме 1А / ОП
Ассемблер по схеме 1А / МД
Двухпросмотровый ассемблер
Многопросмотровый ассемблер
Загрузчик
Структура объектных файлов. Основные понятия
Идентификация модуля и атрибуты
Концепция привязки
Объектный файл. Последовательность записей
Объектный файл. Формат записей
Формат записей THEADR и LHEADR
Формат записи LNAMES
Формат записи SEGDEF
Формат записи GRPDEF
Формат записи PUBDEF
Формат записи COMDEF
Формат записи LOCSYM
Формат записи EXTDEF
Формат записи LINNUM
Формат записи LEDATA
Формат записи LIDATA
Формат записи FIXUPP
Формат записи MODEND
Формат записи комментариев


исполнялось 0,073467 c, запросов к базе 6