Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ.doc
Скачиваний:
30
Добавлен:
03.11.2018
Размер:
20.52 Mб
Скачать

10.2.2 Засоби трансляції і компіляції

Асемблери

Асемблер- це програма, яка переводить вихідну програму, написану на мові асемблера, в еквівалентну їй об’єктну програму цільового МП. За принципом формування об’єктної програми розрізняють абсолютні та переміщувані асемблери. Абсолютний асемблер в результаті своєї роботи формує об’єктну програму цільового МП, налаштовану на певну ділянку адресного простору. Для переналагодження об’єктної програми (ОП) в нову область адресного простору необхідне повторне асемблерування. Результатом роботи переміщуваного асемблера є ОП цільового МП у відносних адресах, тобто забезпечується можливість переміщення ОП в будь-яку область адресного простору цільового МП. Подальше налагодження ОП засобами редактора зв’язків. Тому ефективним є використання непереміщуваного асемблера.

Розглянемо принцип побудови переміщуваного асемблера. Треба підкреслити, що для формування ОП асемблеру необхідна повна інформація про положення оброблюваної команди відносно початку програми, а також характеристика операндів команди. Враховуючи, що обробка записів вихідного тексту здійснюється послідовно, асемблер в деяких випадках не має всіх даних по оброблюваній команді. Тому реалізація асемблерів передбачає наявність двох проходів вихідного тексту програми, а якщо в складі асемблера є засоби макрогенерації, то число проходів рівне трьом.

На рисунку 10.6 показана функціональна схема двопрохідного (двопроглядового) асемблера.

Вхідними даними для першого проходу є вихідний текст МП-програми, таблиця псевдооперацій і таблиця машинних кодів, тобто команд цільового МП. Вихідними даними першого проходу є таблиця символів, яка містить:

  1. поле “мітка”, для збереження мітки команди;

  2. поле “значення РС”, що містить інформацію про стан лічильника команд;

  3. поле “довжина команди”, що вказує на довжину команди в байтах;

  4. поле “додаткова ознака”, де вказується на переміщуваність адреси даної команди або на її абсолютне значення.

Рисунок 10.6- Функціональна схема асемблера

Вхідними даними другого проходу є вихідний текст МП-програми, таблиця символів, таблиця машинних команд і таблиця псевдооперацій. Вихідними даними є ОП на носії інформації, а також протокол результату трансляції на засобі візуального відображення інструментального комплекс.

Компілятори

Вихідний текст МП-програми може бути підготовлений також на мові високого рівня. В цьому випадку програма-транслятор називається компілятором або інтерпретатором. В залежності від побудови компілятора результатом трансляції може бути або об’єктний код цільового МП або деяка проміжна мова. В другому випадку в системі програмування передбачені додаткові засоби трансляції в коди конкретного цільового МП. В загальному випадку компілятор- це програма, для якої вхідною інформацією служить вихідна програма на певній мові високого рівня, а результатом є еквівалентна їй об’єктна програма.

На рисунку 10.7 представлено логічна структура компілятора. Штихові стрілки зображують інформаційні потоки, тоді як суцільні стрілки вказують на порядок роботи програмних компонентів компілятора. Процес компіляції складається з двох етапів: аналізу вихідної програми і синтезу об’єктної програми. На етапі аналізу реалізується ділення тексту на складові частини, а на етапі синтезу з них будують частини еквівалентної об’єктної програми. При цьому на етапі аналізу компілятор будує декілька інформаційних таблиць, які в процесі компіляції використовується на всіх етапах. Одною з центральних таблиць є таблиця символів. Вона складається з елементів, які відповідають всім різновидам ідентифікаторів, які зустрічаються у вихідній програмі. Лексичний аналізатор створює початкові елементи шляхом поступового сканування вихідної програми. Елементи таблиці символів містять назву ідентифікаторів вихідного тексту МП-програми, додаткові відомості про ці ідентифікатори: тип(проста змінна, масив тощо), тип значень даних(ціле, дійсне число тощо) і т.д. семантичний аналізатор вносить цю інформацію в таблицю символів поступово в порядку обробки декларацій, заголовків програм та інструкцій. Синтезуюча частина компілятора використовує інформацію таблиці символів для побудови ефективного об’єктного коду цільової МП-програми. Поряд з таблицями символів будуються таблиці констант, таблиці циклів тощо.

Рисунок 10.7- Логічна структура компілятора

Інтерпретатори

Різниця між компіляторами та інтерпретатором в тому, що інтерпретатор не породжує об’єктну програму, а безпосередньо виконує її сам. Інтерпретатор виконує аналіз вихідного тексту програми шляхом розподілу роботи на дві фази. На першій фазі він аналізує всю вихідну програму і переводить її у внутрішнє представлення. На другій фазі це представлення виконується. Як приклад використання інтерпретатора в мікропроцесорній техніці можна привести широко відомий і ефективний у роботі інтерпретатор з мови високого рівня BASIC.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.