Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen1.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
82.28 Кб
Скачать

53. З яких процесів складається компіляція? Опишіть загальну структуру компілятора.

Аналіз (parsing) – розбиття початкової програми на складові частини та створення проміжного представлення.

Синтез – побудова цільової програми з проміжного представлення.

Загальна структура компілятора багато в чому залежить від його фазової структури і структури синтаксичного аналізатора відображає властивості вихідної мови. Звичайно при проектуванні компілятора керуються такими вимогами: 1) ефективна компіляція; 2) мінімальний розмір компілятора; 3) мінімальна довжина цільового коду; 4) створення ефективного цільового коду; 5) мобільність; 6) простота використання; 7) практичність.

54. Що таке трансляція, компіляція, транслятор, компілятор ?

Трансляція - перетворення програми, яка подана однією мовою програмування, в еквівалентну програму іншою мовою.

Компіляція - трансляція вихідного коду програми в об'єктний код компілятора.

Транслятор - це програма, що переводить вхідну програму на вихідній (вхідній) мові в еквівалентну їй вихідну програму на результуючій (вихідній) мові.

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

55. Опишіть загальну схему роботи компілятора.

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

56 (52-53). Архітектура та властивості типового компілятора. Описати функції етапів компілятора.

57. Семантичний аналіз та підготовка до генерації коду.

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

58. Що таке генерація коду? Опишіть методи генерації коду.

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

59. Способи внутрішнього представлення програми.

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

Відомі наступні форми внутрішнього представлення програм: звязані облікові структури, що представляють синтаксичні дерева; багатоадресний код з явно іменованим результатом (тетради); багатоадресний код з неявно іменованим результатом (тріади); обернений (постфиксна) польський запис операцій; асемблерний код або машинні команди.

Багатоадресний код з явно іменованим результатом (тетради)

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

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

Багатоадресний код з неявно іменованим результатом (тріади)

Тріади являють собою запис у формі трьох складових:

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

Обернений польський запис

Перевага: ефективний для обчислення математичних виразів.

Недоліки: необхідно використовувати стек, важко робити оптимізацію.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]