их даних, тому покажчики не можуть бути ініцілізіровани, а довжина 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) і є по суті крос-системою для об'єктної ЕОМ (ЄС ЕОМ). У цій си...