Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по СПО [укр. язык].DOC
Скачиваний:
46
Добавлен:
02.05.2014
Размер:
526.85 Кб
Скачать

Діагностика помилок.

  • Транслятор ретранслює системні повідомлення;

  • Установлюються коди для перевірки.

Якість діагностики помилок залишається не дуже хорошою. Необхідно чітко класифікувати, де з’явилась помилка та за яких умов. Більшість трансляторів цього не виконує. Причини:

  • Значно збільшується об’єм інформації під час виконання;

  • Ускладнюється сам транслятор;

  • Розвиток технології програмування.

Лекція №13. Тема 8 : Проектування транслятора. Визначення кількості проходів під час трансляції.

Додаткові проходи спричиняються:

  1. Невдалим синтаксисом мови:

  • Опис програмних об’єктів можливий після їх використання;

  • Використання процедур, які описані пізніше її виклику;

  • Синтаксис не визначений з їх структури, тобто неоднозначність управляючих конструкцій.

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

  2. Наявність препроцесорів.

Тема 9 : Оптимізація коду.

Розрізняють машинно-залежну та машинно-незалежну оптимізацію коду. Машинно-незалежна пов’язана з поліпшенням алгоритму, наприклад,

.

Машинно-залежна пов’язана з конкретною архітектурою конкретної ЕОМ.

Оптимізація коду може бути як оптимальною фазою та йти паралельно генерації коду, так і окремим етапом трансляції.

Локальна та глобальна оптимізація коду.

Локальна (вона частіше виконується з генерацією коду) – займається оптимізацією невеликої ділянки програми і частіше вона пов’язана з оптимальними означеннями управляючих структур, наприклад, оптимізація циклів, виразів, привласнень.

Глобальна (вона може бути як окрема фаза, але не обов’язково) – будується на аналізові потоку даних та управлінні всієї програми, або значних її частин.

Критерії оптимізації.

  1. Розмір об’єктного коду;

  2. Час виконання об’єктного коду;

  3. Побудова оптимального оверлею;

  4. Оптимізація вводу – виводу.

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

Локальна оптимізація коду.

Заходи локальної оптимізації коду:

  1. Усунення перепривласнювань, наприклад, a:=b; b:=a;

  2. Вирахування пріоритетів та вартості операції, наприклад,

  1. Оптимізація циклів, наприклад,

k:=0;

for i:=1 to n do

k:=j+1+i+k;

Маємо четвірки:

k=0;

i=1;

L1: T=j+1;

S=T+i;

k=S+k;

i=i+1;

i<=n;

Goto + L1;

а) винесення обчислень за цикл:

k=0;

i=1;

T=j+1;

L1: S=T+i;

k=k+S;

i=i+1;

i<=n;

Goto + L1;

б) використання індуктивних змінних, в даному випадку k:

k=0;

S=j+1;

R=S+n;

L1: S=S+1;

k=S+k;

S<>R;

Goto + L1;

в) заміна складних операцій простішими:

for i:=1 to n do

for j:=1 to n do a:=b;

a[i,j]:=b[i,j];

for i:=1 to 2 do a[1]:=2;

a[i]:=i+1; a[2]:=3;

(маємо шість (маємо дві четвірки, тобто

четвірок, тобто дві команди)

одинадцять команд)

Соседние файлы в предмете Системное программное обеспечение