Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pz.1.doc
Скачиваний:
3
Добавлен:
15.09.2019
Размер:
435.2 Кб
Скачать

5 Описание объектного кода

5.1 Формат объектного файла

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

Формат объектного файла представлен в таблице 4.2.

Объектный файл состоит из записей следующих типов: заголовок, определение, тело, модификатор, конец.

Таблица 5.1- Формат объектного файла

Запись-заголовок

Записи-определения

Тело программы

Записи-модификаторы

Запись-конец

Формат записей.

Запись-заголовок.

Столбец 1 H

Столбцы 2-7 Имя программы

Столбцы 8-13 Начальный адрес программы (шестнадцатеричный)

Столбцы 14-19 Длина программы в байтах (шестнадцатеричная)

Тело программы.

Столбец 1 T

Столбцы 2-7 Начальный адрес данной записи (шестнадцатеричный)

Столбцы 8-9 Длина данной записи в байтах (шестнадцатеричная)

Столбцы 10-69 Объектный код (шестнадцатеричный)

Запись-конец.

Столбец 1 E

Столбцы 2-7 Адрес первой исполняемой команды объектной

программы (шестнадцатеричный)

Запись-определение.

Столбец 1 D

Столбцы 2-7 Идентификатор внешнего имени, определенный в

данной управляющей секции

Столбцы 8-13 Относительный адрес имени (шестнадцатеричный)

Столбцы 14-73 Информация, аналогичная столбцам 2-13 для других

внешних имен

Запись-модификатор.

Столбец 1 M

Столбцы 2-7 Начальный адрес модифицируемого адресного поля

относительно начала управляющей секции

(шестнадцатеричный)

Столбцы 8-9 Длина модифицируемого адресного поля в полубайтах

(шестнадцатеричная)

Столбец 10 Признак модификации (+/-)

Столбцы 11-69 Выражение, определяющее значение модификации

5.2 Пример объектного файла

HCOOL__000000000016

DX_____00Y_____01Z_____02K_____03

T00000016050103002201002100012201012600010

3E1401

M0401+COOL__

M0A01+COOL__

M1001+COOL__

E04

6 Описание программного продукта

6.1 Рекомендации к использованию

Программный продукт написан на языке Borland C++ Builder 6.0 . Чтобы увидеть результат работы кросс - ассемблера, необходимо запустить программу и указать путь к ASM-файлу. В том же каталоге создастся OBJ-файл. Необходимо добавить, что ASM-файл должен быть написан по стандарту, разработанному для данного курсового проекта.

6.2 Макроопределения и макрорасширения

При использовании макроопределений используются две директивы ассемблера – DEFMACRO и ENDMACRO. Первое предложение DEFMACRO идентифицируют начало макроопределения. Текст в поле метки является именем этого макроопределения. После директивы DEFMACRO следуют предложения, составляющие тело макро определения. Именно эти предложения и будут порождены в процессе макрогенерации.

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

Для включения макроопределения в программу используется директива USEMACRO <имя>.

6.3 Макропроцессор.

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

На первом просмотре составляется таблица макроопределений куда заносится, имя размер и код макроопределения.

Если во втором просмотре встречается директива USEMACRO <имя>, то вместо нее подставляется код макроопределения <имя>. Далее происходит связывание модулей и создание объектного файла - в соответствии с таблицами 3.1 и 3.2, где представлены структуры данных и их связывание.

6.4 Входные и выходные данные

Входные данные должны быть представлены в виде строк текста в кодировке ASCII. Выходные данные представляются в виде перемещаемого объектного модуля.

6.5 Связь модулей и функций

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

Для перевода исходной программы в ее объектное представление необходимо выполнить действия в следующем порядке:

  1. Преобразовать мнемонические коды операций в их эквиваленты на машинном языке.

  2. Преобразовать символические операнды в эквивалентные им машинные адреса.

  3. Построить машинные команды в соответствующем формате.

  4. Преобразовать константы, заданные в исходной программе, во внутреннее машинное представление.

  5. Записать объектную программу и связать модули.

Разработанный транслятор выполняет два просмотра исходной программы. Основной задачей первого просмотра является поиск символических имен и назначение им адресов. Фактическая трансляция выполняется во время второго просмотра.

В программном продукте используются следующие функции:

function Int2Hex(x:word):string; - Переводит целое число в 16-ричный формат, представленный как строковое выражение.

function Int2Hex8(x:byte):string; - Представляет один байт как число в 16-ричном формате, представленное как строковое выражение.

function GetNumCom(X:byte); - выделяет номер команды из кода.

function SetParam(C:word); - выделяет параметры команды из ее кода.

function sR8(i,X:byte); - установка 8-разрядного регистра.

function sR16(i:byte;X:word); - установка 16-разрядного регистра.

function gR8(i:byte):byte; - получает значение 8-разрядного регистра.

function gR16(i:byte):word; - получает значение 16-разрядного регистра.

function Step1; - функция работы микрокоманды №1.

function Step41; - функция работы микрокоманды №41.

function GetnewModule; -создание перемещаемого объектного модуля.

Если во втором просмотре встречается директива USEMACRO <имя>, то вместо нее подставляется код макроопределения <имя>.

6.6 Комплект поставки и порядок инсталляции

Данный программный продукт поставляется на дискете либо компакт - диске. В него входят файлы «Cross.exe», «Cross.срр» (исходный код программы), а также пример транслируемого файла «1.asm» и результат трансляции в файле «1.obj». Чтобы помочь разобраться с программой, также поставляется файл «ПЗ» формата Word с текстом пояснительной записки.

Для инсталляции достаточно скопировать файл «Cross.exe» в любую папку на вашем компьютере. Потребуется всего лишь 1 мегабайт дискового пространства. Для работы программа не требует дополнительных библиотек, а обрабатываемые ASM-файлы могут находиться в любой папке. Транслятор в качестве результатов своей работы генерирует объектный файл с именем исходного файла и расширением .OBJ, находящийся в той же папке что и транслируемый ASM-файл.

ВЫВОДЫ

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

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

Кросс - ассемблер компилирует исходную программу в объектный модуль, который затем с помощью какого-либо подходящего компоновщика может быть скомпонован с другими модулями и настроен для запуска в адресном пространстве микроЭВМ.

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

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

ПЕРЕЧЕНЬ ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Дж. Донован Системное программирование, пер. с англ., Л.Д. Райкова – М.: “Мир”,1975, стр. 540.

2. Использование Turbo Assembler при разработке программ / Сост. А. А. Чекатов. - Киев: “Диалектика”, 1995. - 288 с.

3. Сван Т. Освоение Turbo Assembler.- К.: “Диалектика”, 1996. - 544с.,ил.

4. Л.Бек Введение в системное программирование, пер. с англ., Н.А. Богомолова – М.: «Мир», 1988, стр. 448.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]