Материал: Разработка элементов учебной системы программирования

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

C0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

D0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

E0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

F0 02 54 58 54 40 00 00 06 40 40 00 04 40 40 00 01 TXT@ @@ @@

50 50 F0 22 40 40 40 40 40 40 40 40 40 40 40 40 PPð"@@@@@@@@@@@@

00000110 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 0A 40 40 00 04 40 40 00 01 TXT@ @@ @@

58 50 F0 22 40 40 40 40 40 40 40 40 40 40 40 40 XPð"@@@@@@@@@@@@

00000160 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 0E 40 40 00 04 40 40 00 01 TXT@ @@ @@

A0 58 50 50 00 40 40 40 40 40 40 40 40 40 40 40 40 XPP @@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

C0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

D0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

E0 02 54 58 54 40 00 00 12 40 40 00 06 40 40 00 01 TXT@ @@ @@

F0 D1 03 F0 1E 50 00 40 40 40 40 40 40 40 40 40 40 Ñ ð P @@@@@@@@@@

00000200 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 18 40 40 00 02 40 40 00 01 TXT@ @@ @@

07 FE 40 40 50 00 40 40 40 40 40 40 40 40 40 40 þ@@P @@@@@@@@@@

00000250 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 1C 40 40 00 04 40 40 00 01 TXT@ @@ @@

00 00 00 2C 50 00 40 40 40 40 40 40 40 40 40 40,P @@@@@@@@@@

A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

C0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

D0 02 54 58 54 40 00 00 20 40 40 00 04 40 40 00 01 TXT@ @@ @@

E0 00 00 00 0C 50 00 40 40 40 40 40 40 40 40 40 40P @@@@@@@@@@

F0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 24 40 40 00 04 40 40 00 01 TXT@ $@@ @@

00 00 00 00 50 00 40 40 40 40 40 40 40 40 40 40P @@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 45 4E 44 40 40 40 40 40 40 40 40 40 40 40 40 END@@@@@@@@@@@@

00000380 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

. Загрузчик, Эмулятор, Отладчик

Анализ поставленной задачи

В поставленной задаче появились новые команды ассемблера, отсутствующие в исходном макете компилятора. Это следующие команды: LA, MVN, DC PL3’X’, DS PL3, DS A, EQU.

Форматы команд

3.      Команда LA. Загружает адрес переменной в регистр. Имеет следующий формат:

LA R1, D2(X2, B2)R1, D2(X2, B2)

где:

·        R1- регистр РОН;

·        D2 - смещение относительно базового адреса, содержащегося в регистре общего назначения;

·        X2 -регистр РОН, используемый в качестве индекса;

·        B2 - регистр РОН, содержащие адрес данных;

·        Первый операнд - адресат, второй - источник;

Длина команды составляет 4 байта. Тип команды - RX.

.        Команда MVN. Производит копирование числа из одного адреса памяти в другой. Эта команда имеет следующий формат:

MVN D1(L, B1), D2(B2)

где:

·        D1 и D2 - смещение относительно базового адреса, содержащегося в регистре общего назначения;

·        B1, B2 - регистры РОН, содержащие адрес данных;

·        L - длина операндов в байтах

Команда типа SS, имеет длину 6 байт.

Формат декларирования переменных

4.1.   Команда DC с операндом PL3’X’ используется для объявления и инициализации целых десятичных переменных, где Х - значение при инициализации. ‘P’ - стандартный тип десятичных переменных в ассемблере IBM 370. Литера ‘L’ означает длину числа в байтах, которая соответствует 3 байтам - фиксированное значение, оговоренное в ограничениях к компилятору ЯВУ.

.2.     Команда DS с операндом PL3 используется для объявления целых десятичных переменных. ‘P’ - стандартный тип десятичных переменных в ассемблере IBM 370. Литера ‘L’ означает длину числа в байтах, которая соответствует 3 байтам - фиксированное значение, оговоренное в ограничениях к компилятору ЯВУ.

.3.     Команда DS с операндом A используется для резервирования памяти под переменные-указатели. Выделяет память на 4 байта не инициализированных данных, т.к. указатели не могут быть иницилизированы, а длина 4 байта соответствует длине адреса архитектуры IBM 370.

.4.     Команда EQU, где правый операнд - это существующая переменная, используется для подстановки правого операнда вместо левого.

Ограничение компилятора ассемблера

Список ограничений в данной реализации компилятора ассемблера:

·        Поддержка только 3ех-байтовых переменных типа ‘P’;

·        Команда EQU не может принимать в качестве правого операнда выражения;

·        Поддержка только вышеописанных команд и псевдокоманд;

Преобразование команд в байт код

Рассмотрим формат байт-кода новых команд.

.        Команда LA:

·        имеет размер 4 байта

·        тип RX

·        формат:


где

·        0x41 - код команды

·        R1 содержит номер регистра РОН, в который будет записан результат работы команды

·        X2 содержит номер регистра РОН, использующегося в качестве индекса

·        B2 содержит номер регистра РОН, использующегося для хранения адреса в памяти, содержащего данные

·        D2 представляет смещение относительно базового адреса, содержащегося в регистре общего назначения

.        Команда MVN:

·        имеет размер 6 байт

·        тип SS (Storage- Storage)

·        формат:


где:

·        0xD1 - код команды

·        B1, B2 содержат номер регистра РОН, использующегося для хранения адреса в памяти, содержащего данные первого и второго операндов соответственно

·        D1, D2 представляет смещение относительно базового адреса, содержащегося в регистре общего назначения для первого и второго операндов соответственно

.        Псевдокоманда DC с параметром PL3:

·        Объявляет и инициализирует целую десятичную переменную, длинной 3 байта

.        Псевдокоманда DS с параметром PL3:

·        Объявляет целую десятичную переменную, длинной 3 байта

.        Псевдокоманда DS с параметром A:

·        Резервирует 4 байта памяти, использующихся в дальнейшем для запоминания адреса данных

.        Псевдокоманда EQU с параметром - именем переменной:

·        Ассоциирует метку с указанным параметром. Используется для объявления BASED-переменных

Модификация базы данных исходного макета

В таблицу машинных операций (TMOP) были добавлены команды LA и MVN.

Добавлена структура буфера 6ти-байтовых команд.

Модификация алгоритма исходного макета

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

В функцию FDC были внесены изменения, позволяющие обрабатывать объявление десятичных переменных типа ‘P’, а в функцию FDS - позволяющие обрабатывать объявления переменных типа ‘A’.

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

Подпрограмма формирования TXT карты теперь поддерживает 6ти-байтовые команды.

Добавлены функции FSS и SSS для обработки шестибайтовых команд.

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

Плюсы данной реализации:

·        Возможность использования псевдокоманды EQU для подстановки любого слова вместо имени переменной;

·        Выравнивание данных по размеру адреса;

·        Поддержка 6ти-байтовых команд;

Минусы данной реализации:

·        Поддержка только 3ех-байтовых переменных типа ‘P’;

·        Команда EQU не может принимать в качестве правого операнда выражения;

·        Поддержка только вышеописанных команд и псевдокоманд;

Построение компилятора с языка высокого уровня (ЯВУ), являющегося одним из элементов системы программирования, образующих в совокупности следующий технологический конвейер:


При этом предполагается то, что данная система программирования работает на технологической ЭВМ (IBM PC) и является по существу кросс-системой для объектной ЭВМ (ЕС ЭВМ). В этой системе:

·        в качестве языка высокого уровня (ЯВУ) выбран язык, образованный из подмножества языковых конструкций ПЛ1, а исходная программа готовится в виде текстового файла технологической ЭВМ с расширением *.pli;

·        язык АССЕМБЛЕРА сформирован из языковых конструкций АССЕМБЛЕРА ЕС ЭВМ, а ассемблеровский эквивалент исходной программы формируется в виде текстового файла технологической ЭВМ с расширением *.ass;

·        объектный эквивалент исходной программы готовится в формате объектных файлов операционной системы ОС ЕС ЭВМ и хранится в виде двоичного файла технологической ЭВМ с расширением *.tex;

·        загрузочный эквивалент исходной программы представляет собой машинный код ЕС ЭВМ, запоминаемый в области ОЗУ технологической ЭВМ, являющейся зоной загрузки для эмулятора объектной ЭВМ.

Постановка задачи

Необходимо выполнить доработку элементов макета учебной системы программирования до уровня, позволяющего обрабатывать “новые” для макета конструкции языка высокого уровня, примененные в соответствующем варианте:


Где на входе исходный текст программы в виде байт-кода ЭВМ IBM 370:

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

02 45 53 44 40 40 40 40 40 40 00 10 40 40 00 01 ESD@@@@@@ @@

45 58 30 34 40 40 40 40 00 00 00 00 40 00 00 28 EX04@@@@ @ (

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 00 40 40 00 02 40 40 00 01 TXT@ @@ @@

05 F0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 ð@@@@@@@@@@@@@@

00000070 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

A0 02 54 58 54 40 00 00 02 40 40 00 04 40 40 00 01 TXT@ @@ @@

B0 41 50 F0 1A 40 40 40 40 40 40 40 40 40 40 40 40 APð @@@@@@@@@@@@

000000C0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

D0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

E0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

F0 02 54 58 54 40 00 00 06 40 40 00 04 40 40 00 01 TXT@ @@ @@

50 50 F0 22 40 40 40 40 40 40 40 40 40 40 40 40 PPð"@@@@@@@@@@@@

00000110 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 0A 40 40 00 04 40 40 00 01 TXT@ @@ @@

58 50 F0 22 40 40 40 40 40 40 40 40 40 40 40 40 XPð"@@@@@@@@@@@@

00000160 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 0E 40 40 00 04 40 40 00 01 TXT@ @@ @@

A0 58 50 50 00 40 40 40 40 40 40 40 40 40 40 40 40 XPP @@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

C0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

D0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

E0 02 54 58 54 40 00 00 12 40 40 00 06 40 40 00 01 TXT@ @@ @@

F0 D1 03 F0 1E 50 00 40 40 40 40 40 40 40 40 40 40 Ñ ð P @@@@@@@@@@

00000200 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 18 40 40 00 02 40 40 00 01 TXT@ @@ @@

07 FE 40 40 50 00 40 40 40 40 40 40 40 40 40 40 þ@@P @@@@@@@@@@

00000250 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 1C 40 40 00 04 40 40 00 01 TXT@ @@ @@

00 00 00 2C 50 00 40 40 40 40 40 40 40 40 40 40,P @@@@@@@@@@

A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

C0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

D0 02 54 58 54 40 00 00 20 40 40 00 04 40 40 00 01 TXT@ @@ @@

E0 00 00 00 0C 50 00 40 40 40 40 40 40 40 40 40 40P @@@@@@@@@@

F0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 54 58 54 40 00 00 24 40 40 00 04 40 40 00 01 TXT@ $@@ @@

00 00 00 00 50 00 40 40 40 40 40 40 40 40 40 40P @@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

02 45 4E 44 40 40 40 40 40 40 40 40 40 40 40 40 END@@@@@@@@@@@@

00000380 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 @@@@@@@@@@@@@@@@

B0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40 @@@@@@@@EX04@@@@

На выходе пошаговое выполнение инструкций программы с отображением текущей команды, значением регистров и памяти программы:

Рис. 2 Вывод загрузчика

компилятор программирование ассемблер

Анализ поставленной задачи

Во входном файле появились две новые команды, неизвестные для загрузчика, это команды LA с кодом 0x41 и MVN с кодом 0xD1. Рассмотрим формат байт-кода этих команд:

.        Команда LA:

·        имеет размер 4 байта

·        тип RX

·        формат:


где

·        0x41 - код команды

·        R1 содержит номер регистра РОН, в который будет записан результат работы команды

·        X2 содержит номер регистра РОН, использующегося в качестве индекса

·        B2 содержит номер регистра РОН, использующегося для хранения адреса в памяти, содержащего данные

·        D2 представляет смещение относительно базового адреса, содержащегося в регистре общего назначения

.        Команда MVN:

·        имеет размер 6 байт

·        тип SS (Storage- Storage)

·        формат:


где:

·        0xD1 - код команды

·        B1, B2 содержат номер регистра РОН, использующегося для хранения адреса в памяти, содержащего данные первого и второго операндов соответственно

·        D1, D2 представляет смещение относительно базового адреса, содержащегося в регистре общего назначения для первого и второго операндов соответственно

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

Ограничения

·        Эмулятор команды MVN поддерживает данные длиной только 3 байта;

·        Ограничения касаются загрузки TXT-карт. Поддерживается загрузка только одной команды на карте. Т.е. на TXT-карте может быть только одна команда длиной 2, 4 или 6 байт;

·        Загрузчик может загружать только одну программу;

·        Поддерживаются программы максимальной длиной в 50 карт;

Модификация базы данных исходного макета

В таблицу машинных операций (TMOP) были добавлены новые команды LA и MVN.

Модификация алгоритма исходного макета

В эмулятор добавлены программы реализации семантики команд LA и MVN.

В загрузчик добавлены функции загрузки 6ти-байтовых команд по аналогии обработки 2ух и 4ех-байтовых команд.

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

Плюсы данной реализации:

·        Поддержка новых команд: LA и MVN;

·        Загрузчик поддерживает 6ти-байтовые команды;

Минусы данной реализации:

·        Эмулятор для команды MVN поддерживает данные длиной только 3 байта;

·        Поддерживается загрузка только одной команды на TXT-карте;