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

6.1 Асемблери

Для перекладу вихідної програми, представленої мовою асемблера необхідно виконати наступні основні дії:

  • перетворити мнемонічні коди операцій у їхні еквіваленти машинною мовою;

  • перетворити символічні операнди в еквівалентні їм машинні адреси;

  • побудувати машинні команди у відповідному форматі;

  • перетворити константи, задані у вихідній програмі у внутрішнє машинне представлення;

  • записати об'єктну програму.

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

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

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

Під час першого перегляду виконуються наступні операції:

  • призначаються адреси для всіх пропозицій вихідної програми;

  • запам'ятовуються значення адрес усіх міток;

  • виконуються директиви, що впливають на адресацію.

Під час другого перегляду здійснюються:

  • трансляція команд, що включає в себе переклад кодів операцій і дозвіл адресних посилань;

  • генерація даних заданих відповідними директивами;

  • виконання директив, що не були оброблені під час першого перегляду;

  • запис об'єктного коду.

При розробці асемблера використовуються дві основні внутрішні таблиці:

  • таблиця кодів операцій;

  • таблиця символічних імен.

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

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

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

Апаратні можливості ЕОМ впливають на структуру й функції асемблера. На побудову асемблера впливають наступні моменти:

  • різні види адресації вимагають розширення командного формату;

  • уведення ряду операцій і нових команд;

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

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