Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПЗ / lkspoukr.doc
Скачиваний:
69
Добавлен:
07.02.2016
Размер:
772.1 Кб
Скачать

6.1.2 Машинно-незалежні характеристики асемблера

Ряд загальних характеристик асемблера не мають зв'язку зі структурою машини. До них відносяться такі поняття як літерали, директиви визначення імен, вираження, програмні блоки і керуючі секції.

Літерали дозволяють записувати значення констант, використовуваних у якості операнда, безпосередньо в команді. Це дозволяє уникнути використання пропозицій для визначення констант і відповідних їм міток. Уживання літералів дає такий саме результат, як якби в програмі була явно визначена константа, який би відповідала мітка.

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

Засобу визначення імен передбачають уведення відповідних директив, що дозволяють задавати імена і відповідні їм значення у виді констант і раніше визначених імен.

У більшості асемблерів поряд з одиночними термами (константами, мітками і т.д.), використовуваних як операнди, застосовуються вираження. Кожне таке вираження обчислюється асемблерами під час трансляції, а потім використовується як адреса, або як безпосередній операнд. Частіше допускаються арифметичні вираження, що будуються за стандартними правилами. У вираженнях використовуються константи, метки і спеціальні терми. Одним із таких загальновживаних спеціальних термів є терм, що посилається на лічильник розміщень. Значенням цього терму є адреса, що буде привласнений черговій команді.

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

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

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

Для завдання зовнішніх посилань використовуються директиви визначення й оголошення зовнішніх посилань. Директива визначення зовнішніх посилань задає імена даної секції, що доступні в інших секціях. Оголошення зовнішніх посилань задає імена, використовувані в даній секції, але визначені в іншій секції. В об'єктному коді асемблер залишає місце для завдання зовнішніх імен. При цьому вводяться два типи записів: запис-визначення й запис посилання. Крім цього для завдання інформації для зв'язування програм уводиться запис-модифікатор.

Соседние файлы в папке СПЗ