Page 211 - 149
P. 211
На рисунку 10.5 представлена архітектура системи програмування,
засоби описання алгоритмів і програм якої забезпечують можливість ведення
програмування на декількох мовах високого рівня, але на відміну від вже
розглянутої вище системи засоби компіляції і трансляції формують об’єктні
модулі, вміст яких не відповідає кодам цільового МП. Компілятори, в цьому
випадку, формують об’єктні модулі на проміжній абстрактній мові. Засоби
редагування зв’язків і компоновки об’єднують окремі об’єктні модулі МП-
програми і формують єдиний модуль на проміжній мові. Відлагодження
завантажувального модуля забезпечується використанням символічних
відлагоджувачів. Після завершення процесу відлагодження,
завантажувальний модуль МП-програми транслюється в коди цільового МП.
10.2.2 Засоби трансляції і компіляції
Асемблери
Асемблер- це програма, яка переводить вихідну програму, написану на
мові асемблера, в еквівалентну їй об’єктну програму цільового МП. За
принципом формування об’єктної програми розрізняють абсолютні та
переміщувані асемблери. Абсолютний асемблер в результаті своєї роботи
формує об’єктну програму цільового МП, налаштовану на певну ділянку
адресного простору. Для переналагодження об’єктної програми (ОП) в нову
область адресного простору необхідне повторне асемблерування.
Результатом роботи переміщуваного асемблера є ОП цільового МП у
відносних адресах, тобто забезпечується можливість переміщення ОП в будь-
яку область адресного простору цільового МП. Подальше налагодження ОП
засобами редактора зв’язків. Тому ефективним є використання
непереміщуваного асемблера.
Розглянемо принцип побудови переміщуваного асемблера. Треба
підкреслити, що для формування ОП асемблеру необхідна повна інформація
про положення оброблюваної команди відносно початку програми, а також
характеристика операндів команди. Враховуючи, що обробка записів
вихідного тексту здійснюється послідовно, асемблер в деяких випадках не
має всіх даних по оброблюваній команді. Тому реалізація асемблерів
передбачає наявність двох проходів вихідного тексту програми, а якщо в
складі асемблера є засоби макрогенерації, то число проходів рівне трьом.
На рисунку 10.6 показана функціональна схема двопрохідного
(двопроглядового) асемблера.
Вхідними даними для першого проходу є вихідний текст МП-
програми, таблиця псевдооперацій і таблиця машинних кодів, тобто команд
цільового МП. Вихідними даними першого проходу є таблиця символів, яка
містить:
* поле “мітка”, для збереження мітки
команди;
190