КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Двухпросмотровый ассемблер
Структура объектного кода Ассемблер (транслятор) Ассемблер предназначен для построения машинного кода программы, представленной в виде текста на языке Ассемблер, создания дополнительной информации, необходимой при построении программы загрузчиком. Решаемые задачи:
Объектный код – это программа в машинных кодах и информация, необходимая загрузчику для создания и выполнения программы. Информация в объектном модуле представлена в виде карт. В современных объектных модулях (ОМ) она может представляться в табличном виде с содержанием всей той информации, которая есть в картах – машинный код сгенерирован для 0-го адреса загрузки.
H<имя модуля><длина модуля в ОП> Назначение: задание имени модуля и заказ требуемого для него объема памяти.
D<имя внешней переменной><значение (адрес)><перемещаемость> Назначение: указание информации о внешней переменной.
R<имя внешней ссылки>[,…,] Предназначена для указания внешних ссылок, используемых в программе.
Т<адрес данных><длина данных><данные> Предназначена для указания значений, которые должны быть записаны в ОП перед выполнением программы, т.е. при ее загрузке.
М<адрес данных><длина данных><формула>[,…,] Предназначена для указания места и кода формулы модификации кода программы при объединении нескольких объектных модулей в программу или перемещения модуля в ОП. Форма модификации: <имя внешней ссылки> ± На каждое место кода программы, где указано значение внешней ссылки (используется внешняя ссылка) или значение перемещаемого выражения (перемещаемой переменной), создается отдельная карта модификации.
Е<точка входа> Точка входа – адрес первой выполняемой команды. Основная задача, решаемая ассемблером – это посторенние машинных кодов команд по текстовым операторам. Для построения кода команды необходимо знать: · код операции; · типы и значения операндов. Если вся эта информация известна, то транслятор может сформировать код программы. Это в случае, если операнды отсутствуют, являются константами или регистрами. В случае использования символического имени в операнде, возможны два случая: 1. Если соответствующая переменная или метка уже встретились в предыдущих операторах, то их значение известно (адрес) и можно генерировать код команды. 2. Переменная или метка еще не встретились, значит, их значение не известно, следовательно, построить код команды невозможно. Поэтому задача построения кода программы решается в два просмотра. Задача первого просмотра: Распределить память для программы и определить значения переменных или меток. Результатом первого просмотра является таблица символических имен, содержащая список переменных и меток и их значение. Также при первом просмотре может быть сформирована таблица литералов. Литералы – это константы длиной более слова, а, следовательно, они не могут быть вписаны в команды. Транслятор отдельно самостоятельно выделяет память для таких констант и запоминает в таблице адрес памяти, где расположено значение константы, а в команде вместо константы подставляет ссылку на адрес памяти. Задача второго просмотра:
В процессе трансляции используется ряд постоянных и переменных структур данных (таблиц). 2.1 Постоянные таблицы
Содержит информацию о коде операции, длине команды и формате кодирования команды. Состоит из полей: · мнемокод команды; · тип первого операнда; · тип второго операнда; · длина команды; · код операции (обычно значение первого байта); · вид формата команды (одно или несколько полей). Ключ таблицы составной и включает в себя первые три поля. Таблица используется при первом просмотре для определения длины команды, а также для определения формата и кода операции. Таблица заполняется???? и не изменяется в процессе трансляции.
Предназначена для указания имен регистров, их типа и кода. Содержит поля: · имя регистра; · код (номер) регистра; · тип регистра. Таблица используется на первом просмотре для определения типа регистров, на втором просмотре – код регистра (???). Ключом является имя регистра. 2.2 Переменные таблицы
Предназначена для хранения информации об идентификаторах переменных, констант и меток, оставшихся в программе. Содержит поля: · имя (идентификатор); · значение (для переменной и метки это адрес, для переменной – ее значение); · перемещаемость. Значение переменной перемещаемо, если адрес (переменная, метка). Если это константа, то не перемещаема; · тип переменной; · длина значения переменной. Таблица формируется при первом просмотре, а используется во втором для формирования кодов команд, использующих ссылки.
Предназначена для хранения информации о длинных константах. Содержит такие же поля, как таблица символьных имен, но вместо имени переменной используется сама запись константы. Далее все то же, что в ТСИ.
Дата добавления: 2014-01-15; Просмотров: 1862; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |