Реклама:

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

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

Во многих ассемблерах предусмотрены макросы, которые позволяют программистам давать символические имена целым последовательностям команд. Обычно эти макросы могут быть параметризированы. Макросы реализуются с помощью алгоритма обработки строковых литералов.

Большинство ассемблеров двухпроходные. Во время первого прохода строится таблица символов для меток, литералов и объявляемых идентификаторов. Символические имена можно либо не сортировать и искать путем последовательного просмотра таблицы, либо сначала сортировать, а потом применять двоичный поиск, либо хэшировать. Если символические имена не нужно удалять во время первого прохода, хэширование - это лучший метод. Исполняемая программа создается во время второго прохода. Что касается директив (псевдокоманд), то одни из них выполняются при первом проходе, другие - при втором.

Программы, которые ассемблируются независимо друг от друга, можно скомпоновать вместе и получить исполняемую двоичную программу. Эту работу выполняет компоновщик. Его цель - это перераспределение в памяти и связывание имен. Динамическая компоновка - это технология, при которой определенные процедуры не компонуются до тех пор, пока они не вызваны. Библиотеки коллективного доступа в UNIX и библиотеки динамической компоновки (DLL) в Windows используют технологию динамической компоновки.

Динамическая компоновка || Оглавление || Вопросы и задания7