Выдача ассебмлера - Ассемблер

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

В большинстве систем-фирмы IBM для трансляции используется ассемблер F. Этот ассемблер является двухпроходным макроассемблером. Процесс ассемблирования состоит из двух этапов, этапа макрогенерации и этапа трансляции, осуществляемого в два прохода.

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

На первом проходе ассемблирования получается скелет результирующей программы на машинном языке. Каждому предложению сопоставляется адрес, равный соответствующему значению счетчика размещения, и строится таблица имен. Любое символическое имя, встречающееся в исходной программе, описывается в этой таблице только один раз. Для каждого такого символического имени указывается значение счетчика размещения, соответствующее положению, в котором данное имя было определено, и длина в байтах идентифицируемого этим именем объекта. Например, элемент таблицы для имени NEXTNUM программы, приведенной на рис. 6.2, выглядит так:

Имя

Длина

Адрес

NEXTNUM

00004

000072

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

 

Рис. 6.3. Листинг ассемблера программы с синтаксическими ошибками.

Но что произойдет, если, например, употребляемое символическое имя не входит в таблицу имен? Разбору подобных ситуаций посвящен следующий раздел.

 



 
Статьи раздела