Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Двухпросмотровый ассемблер

Структура объектного кода

Ассемблер (транслятор)

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

Решаемые задачи:

  1. Распределение памяти для переменных и программ.
  2. Создание машинного кода программы, т.е. построение кодов команд для соответствующих операторов исходной программы.
  3. Формирование объектного кода.
  4. Формирование протокола трансляции (листинга).

Объектный код – это программа в машинных кодах и информация, необходимая загрузчику для создания и выполнения программы.

Информация в объектном модуле представлена в виде карт. В современных объектных модулях (ОМ) она может представляться в табличном виде с содержанием всей той информации, которая есть в картах – машинный код сгенерирован для 0-го адреса загрузки.

  1. Карта-заголовок

H<имя модуля><длина модуля в ОП>

Назначение: задание имени модуля и заказ требуемого для него объема памяти.

  1. Карта объявления внешней переменной

D<имя внешней переменной><значение (адрес)><перемещаемость>

Назначение: указание информации о внешней переменной.

  1. Карта объявления внешней ссылки

R<имя внешней ссылки>[,…,]

Предназначена для указания внешних ссылок, используемых в программе.

  1. Карта тела программы (карта кода программы)

Т<адрес данных><длина данных><данные>

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

  1. Карта модификации

М<адрес данных><длина данных><формула>[,…,]

Предназначена для указания места и кода формулы модификации кода программы при объединении нескольких объектных модулей в программу или перемещения модуля в ОП.

Форма модификации: <имя внешней ссылки> ±

На каждое место кода программы, где указано значение внешней ссылки (используется внешняя ссылка) или значение перемещаемого выражения (перемещаемой переменной), создается отдельная карта модификации.

  1. Карта конца модуля

Е<точка входа>

Точка входа – адрес первой выполняемой команды.

Основная задача, решаемая ассемблером – это посторенние машинных кодов команд по текстовым операторам. Для построения кода команды необходимо знать:

· код операции;

· типы и значения операндов.

Если вся эта информация известна, то транслятор может сформировать код программы. Это в случае, если операнды отсутствуют, являются константами или регистрами.

В случае использования символического имени в операнде, возможны два случая:

1. Если соответствующая переменная или метка уже встретились в предыдущих операторах, то их значение известно (адрес) и можно генерировать код команды.

2. Переменная или метка еще не встретились, значит, их значение не известно, следовательно, построить код команды невозможно.

Поэтому задача построения кода программы решается в два просмотра.

Задача первого просмотра:

Распределить память для программы и определить значения переменных или меток.

Результатом первого просмотра является таблица символических имен, содержащая список переменных и меток и их значение. Также при первом просмотре может быть сформирована таблица литералов.

Литералы – это константы длиной более слова, а, следовательно, они не могут быть вписаны в команды. Транслятор отдельно самостоятельно выделяет память для таких констант и запоминает в таблице адрес памяти, где расположено значение константы, а в команде вместо константы подставляет ссылку на адрес памяти.

Задача второго просмотра:

  1. Формирование кода программы (кодов команд).
  2. Формирование всех карт объектного модуля и создание объектного кода или объектного модуля.
  3. Формирование или дополнение протокола трансляции (файла листинга).

В процессе трансляции используется ряд постоянных и переменных структур данных (таблиц).

2.1 Постоянные таблицы

  1. Таблица форматов команд (ТФК)

Содержит информацию о коде операции, длине команды и формате кодирования команды. Состоит из полей:

· мнемокод команды;

· тип первого операнда;

· тип второго операнда;

· длина команды;

· код операции (обычно значение первого байта);

· вид формата команды (одно или несколько полей).

Ключ таблицы составной и включает в себя первые три поля.

Таблица используется при первом просмотре для определения длины команды, а также для определения формата и кода операции.

Таблица заполняется???? и не изменяется в процессе трансляции.

  1. Таблица регистров

Предназначена для указания имен регистров, их типа и кода. Содержит поля:

· имя регистра;

· код (номер) регистра;

· тип регистра.

Таблица используется на первом просмотре для определения типа регистров, на втором просмотре – код регистра (???).

Ключом является имя регистра.

2.2 Переменные таблицы

  1. Таблица символических имен

Предназначена для хранения информации об идентификаторах переменных, констант и меток, оставшихся в программе. Содержит поля:

· имя (идентификатор);

· значение (для переменной и метки это адрес, для переменной – ее значение);

· перемещаемость. Значение переменной перемещаемо, если адрес (переменная, метка). Если это константа, то не перемещаема;

· тип переменной;

· длина значения переменной.

Таблица формируется при первом просмотре, а используется во втором для формирования кодов команд, использующих ссылки.

  1. Таблица литералов

Предназначена для хранения информации о длинных константах. Содержит такие же поля, как таблица символьных имен, но вместо имени переменной используется сама запись константы. Далее все то же, что в ТСИ.

<== предыдущая лекция | следующая лекция ==>
Добавление ключа | Однопросмотровый ассемблер
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 1835; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.