Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2017-11-21 | 407 |
5.00
из
|
Заказать работу |
|
|
Ассемблер просматривает исходный программный модуль один или несколько раз. Наиболее распространенными являются двухпроходные Ассемблеры, выполняющие два просмотра исходного модуля. На первом проходе Ассемблер формирует таблицу символов модуля, а на втором — генерирует код программы
Алгоритм работы 1-го прохода двухпроходного Ассемблера показан на рисунке.
F Блок1: Начало 1-го прохода ассемблирования.
F Блок2: Начальные установки:
u установка в 0 счетчика адреса PC;
u создание пустой таблицы символов;
u создание пустой таблицы литералов;
u открытие файла исходного модуля;
u установка в FASLE признака окончания.
F Блок3: Признак окончания TRUE?
F Блок4: Считывание следующей строки исходного модуля. Добавка к счетчику адреса устанавливается равной 0.
F Блок5: При считывании был обнаружен конец файла?
F Блок6: Если конец файла обнаружен до того, как обработана директива END, — ошибка (преждевременный конец файла), при этом также устанавливается признак окончания обработки.
F Блок7: Лексический разбор оператора программы. При этом:
u выделяется метка/имя, если она есть;
u выделяется мнемоника операции;
u выделяется поле операндов;
u удаляются комментарии в операторе;
u распознается строка, содержащая только комментарий.
F Блок8: Строка содержит только комментарий? В этом случае обработка оператора не производится.
F Блок9: Мнемоника операции ищется в таблице директив.
F Блок10: Завершился ли поиск в таблице директив успешно?
F Блок11: Если мнемоника была найдена в таблице директив, происходит ветвление, в зависимости от того, какая директива была опознана.
F Блок12: Обработка директив типа DD (определения данных) включает в себя:
|
u выделение элементов списка операндов (одной директивой DD может определяться несколько объектов данных);
u определение типа и, следовательно, размера объекта данных, заданного операндом;
u обработка для каждого операнда возможного коэффициента повторения.
F Блок13: Добавка к счетчику адреса устанавливается равной суммарному размеру объектов данных, определяемых директивой.
F Блок14: Обработка директив типа BSS подобна обработке директив типа DD.
F Блок15: Добавка к счетчику адреса устанавливается равной суммарному объему памяти, резервируемому директивой.
F Блок16: Обработка директивы END состоит в установке в TRUE признака окончания обработки.
F Блок17: Обработка директивы включает в себя вычисление значения имени и занесение его в таблицу символов.
F Блок18: Обработка прочих директив ведется по индивидуальным для каждой директивы алгоритмам. Существенно, что никакие директивы, кроме DD и BSS, не изменяют нулевого значения добавки к счетчику адреса.
F Блок19: Если мнемоника операции не найдена в таблице директив, она ищется в таблице команд.
F Блок20: Завершился ли поиск в таблице команд успешно?
F Блок21: Если мнемоника не была найдена в таблице команд, — ошибка (неправильная мнемоника).
F Блок22: Если мнемоника найдена в таблице команд — определение длины команды, она же будет добавкой к счетчику адреса.
F Блок23: Есть ли в операторе литерал?
F Блок24: Занесение литерала в таблицу литералов (если его еще нет в таблице).
F Блок25: Была ли в операторе метка?
F Блок26: Поиск имени в таблице символов.
F Блок27: Имя в таблице символов найдено?
F Блок28: Если имя найдено в таблице символов — ошибка (повторяющееся имя).Если имя не найдено в таблице символов — занесение имени в таблицу символов.
F Блок29: Формирование и печать строки листинга.
F Блок30: Модификация счетчика адреса вычисленной добавкой к счетчику
F Блок31: Печать строки листинга и переход к чтению следующего оператора.
F Блок32: При окончании обработки — закрытие файла исходного модуля.
|
F Блок33: Были ли ошибки на 1-м проходе ассемблирования?
F Блок34: Формирование литерального пула.
F Блок35: Выполнение 2-го прохода ассемблирования.
F Блок36: Конец работы Ассемблера.
Определение длины команды
Эта задача может решаться существенно разным образом для разных языков. В языках некоторых Ассемблеров мнемоника команды однозначно определяет ее формат и длину (S/390, все RISC-процессоры). В этом случае длина команды просто выбирается из таблицы команд. В других языках длина и формат зависит от того, с какими операндами употреблена команда (Intel). В этом случае длина вычисляется по некоторому специфическому алгоритму, в который входит выделение отдельных операндов и определение их типов. В последнем случае должна производиться также необходимая проверка правильности кодирования операндов (количество операндов, допустимость типов).
Обнаружение литералов
Требует, как минимум, выделения операндов команды.
Листинг
Строка листинга печатается в конце каждой итерации обработки команды. Строка листинга 1-го прохода содержит: номер оператора, значение счетчика адреса (только для команд и директив, приводящих к выделению памяти), текст оператора. Листинг 1-го прохода не является окончательным, фактически он используется только для поиска ошибок, поэтому печатать его необязательно. Режим печати листинга 1-го прохода может определяться параметром Ассемблера или специальной директивой. После листинга программы может (опционно) печататься таблица символов.
Ошибки
На первом проходе выявляются не все ошибки, а только те, которые связаны с выполнением задачи 1-го прохода. Сообщение об ошибке включает в себя: код ошибки, диагностический текст, номер и текст оператора программы, в котором обнаружена ошибка.
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!