Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Принципи розробки компіляторів

Реферат Принципи розробки компіляторів





ожини крайніх правих і крайніх лівих термінальних символів

Символ (U) Початок построенияL(U)R(U)lt;элементgt;lt;числоgt;,IDlt;числоgt;,IDlt;лев.вырgt;lt;числоgt;,IDlt;числоgt;,IDlt;вырgt;lt;числоgt;,ID ; lt; сіс.уравн gt; lt; число gt;, ID;

На основі цих множин і правил граматики G побудуємо матрицю передування граматики:


Таблиця 3.3 - Матриця передування вихідної граматики

константапеременная.;=-+*/Константа--lt;lt;lt;lt;lt;-Переменная---lt;lt;lt;lt;lt;;lt;lt;------=lt;--------lt;lt;------+lt;lt;------*lt;lt;------/lt;lt;------

На основі матриці передування проводиться синтаксичний аналіз методом зрушення-згортка в результаті якого формується матриця коефіцієнтів для подальшого вирішення методом Гаусса.


5. ГЕНЕРАЦІЯ КОДА


Генерація об'єктного коду - це переклад компілятором внутрішнього подання вихідної програми в ланцюжок символів вихідного мови.

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

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

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


5.1 Загальні принципи генерації коду


Завдання генератора коду - побудова для програми lt; javascript:// gt; на вхідній мові еквівалентної машинної програми. Зазвичай в якості входу для генератора коду служить деяке проміжне представлення програми.

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

У якійсь мірі схема генератора коду залежить від форми проміжного представлення. Ясно, що генерація коду з дерева відрізняється від генерації коду з трійок, а генерація коду з префиксной записи lt; javascript:// gt; відрізняється від генерації коду з орієнтованого графа. У той же час всі генератори коду мають багато спільного, і основні застосовуються алгоритми відрізняються, як правило lt; javascript:// gt ;, тільки в деталях, пов'язаних з використовуваним проміжним поданням.


5.2 Основні методи оптимізації


Завдання оптимізації коду полягає у створенні ефективного (з точки зору розміру пам'яті і часу виконання) цільового коду. Бажана ступінь оптимізації буде залежати від обставин. Іноді вона не потрібна, наприклад, якщо у програми малий час виконання, помірні запити до пам'яті і, можливо, малий термін життя.

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

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

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


6. ОПИС ПРОГРАМИ


Назад | сторінка 6 з 8 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Підходи для вирішення проблеми великого розміру коду
  • Реферат на тему: Програма для дослідження завадостійкості лінійного адитивного блочного коду ...
  • Реферат на тему: Перетворювач двійкового коду
  • Реферат на тему: Розробка декодера інверсного коду
  • Реферат на тему: Розробка кодека коду Файр