Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PR_СП_лекции_укр.doc
Скачиваний:
6
Добавлен:
22.04.2019
Размер:
697.34 Кб
Скачать

1.2 Створення програми

Розглянемо процес створення програми на (ANSI) С для ОС UNIX.

Розробка програми починається із створення початкових файлів, що містять текст на мові Сі. Текстові файли проводяться за допомогою одного з текстових редакторів, підтримуваних в середовищі UNIX.

Хоча UNIX-файлы не мають розширень, задаємо створеному файлу розширення для того, щоб його міг розпізнати компілятор.

.c для мови С і .сс (або .С) для С++.

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

Після того, як текстовий файл створений, його потрібно відкомпілювати для отримання об'єктного файлу.

На малюнку показані етапи, які проходить програма від свого написання до виконання

Малюнок 1.3 – Процес підготовки програми до виконання

Процес підготовки виконуваного файлу роздільний на чотири фази:

1. Препроцесор

  • Здійснює вставку початкових текстів з інших файлів (#include)

  • Замінює входження імен, для яких визначена заміна (#define)

  • Здійснює умовну обробку початкового файлу (#ifdef)

  • Знищує коментарі

Вихідні дані препроцесора - це ще ASCII текст (Сі-оператори). Все, що робить препроцесор, це вставляє і замінює текст. На виході виходить нова редакція тексту (на мал. - НИМ'). У більшості систем програмування Макропроцесор суміщений з транслятором, і для програміста його робота і проміжний ЇМ' "не видні".

З одного боку макропроцесор "не розуміє" операторів мови програмування і "не знає" змінних програми, з іншою, всі оператори і змінні Макромови (тих виразів в програмі, які адресовані Макропроцесору) в проміжному ЇМ' вже відсутні і для подальших етапів обробки "не видні".

2. Транслятор

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

Транслятори підрозділяються на Асемблери і Компілятори - залежно від початкової мови програми, яку вони обробляють. Асемблери працюють з Автокодами або мовами Асемблера, Компілятори - з мовами високого рівня.

2.1 Компілятор

  • Перетворить конструкції мови Сі в конструкції асемблера

  • Здійснює перевірку наявності синтаксичних помилок

  • Ця фаза займає більше всього часу

Мова Асемблера - мова програмування, яка є символьною формою машинної мови з поряд можливостей, характерних для мови високого рівня

2.2 Асемблер

  • Перетворить конструкції мови асемблера в машинні команди

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

Фаза асемблера конвертує початкові тексти на мові асемблера в об'єктний код.

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

3. Редактор зв'язків(Компонувальником)

  • Здійснює збірку main і інших об'єктних файлів в завантажуваний модуль

  • Проглядає бібліотеки для дозволу зовнішніх посилань

  • Здійснює підготовку виконуваної коди

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

Завантажувальний модуль - програмний модуль, представлений у формі, придатній для завантаження в оперативну пам'ять для виконання.

Завантажувальний модуль зберігається у вигляді файлу на зовнішній пам'яті.

4. Завантажувач.

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

Можливий також варіант, в якому редагування зв'язків виконується при кожному запуску програми на виконання і поєднується із завантаженням. Це робить Зв'язуючий Завантажувач. Варіант скріплення при запуску більш витратний, оскільки витрати на скріплення тиражуються при кожному запуску. Але він забезпечує:

  • велику гнучкість в супроводі, оскільки дозволяє міняти окремі об'єктні модулі програми, не міняючи решти модулів;

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

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

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