Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Этапы трансляции программы. Состав набора средств разработки и отладки программы на языке высокого уровня. Примеры инструментальных средств.




Ответ:

Трансляция – перевод программы с языка программирования на язык машинных кодов (выполняется транслятором)

Транслятор:

· Анализирует программу на наличие ошибок (синтаксических и др.).

· Генерирует выходную (объектную) программу на языке машинных команд.

· Распределяет память для объектной программы.

Этапы трансляции

· Предварительная обработка (препроцессинг, preprocessing):

o Преобразование исходного текста программы без его анализа.

o Выполняется препроцессором (для C/C++) или компилятором (C#).

o Директивы – специальным образом выделяемые в программе команды управления препроцессором (#define, #if, #pragma, ...) для:

§ Включения файлов в текст программы.

§ Определения макроса (текстовой подстановки).

§ Задания параметров условной компиляции.

o Полезна при отладке программы.

o Может приводить к появлению труднообнаруживаемых ошибок.

1. На входе – исходные файлы.

2. На выходе – "единицы трансляции".

· Компиляция - преобразование в машинные команды, выполняется в несколько подэтапов:

o Лексический анализ.

o Синтаксический анализ.

o Семантический анализ.

o Оптимизация.

o Генерация кода.

1. На входе – единицы трансляции

2. На выходе – машинный код (объектные модули)

· Связывание (компоновка, линковка) выполняется с целью:

o Формирования единого адресного пространства исполняемой программы.

o Размещения всех объектных модулей по соответствующим адресам.

o Изменению относительных адресов процедур и переменных каждого объектного модуля на абсолютные (в пределах всей программы) – внешнее связывание.

§ На входе – объектные модули, библиотечные файлы.

§ На выходе – исполняемый файл (или библиотечные файлы).

Минимальный набор средств разработки

· Текстовый редактор:

o Создание и редактирование текста программ.

o Подсветка синтаксиса, предиктивный ввод текста(автодополнение).

· Препроцессор:

o Предварительная обработка текста

o Удаление комментариев, реализация директив (#) и макросов (текстовых подстановок)

· Компилятор:

o Трансляция текстовых модулей в объектные модули на низкоуровневом языке

· Библиотека подпрограмм:

o Статическая – вставляется в исполняемый модуль на этапе компоновки.

o Динамическая (dll ) - загружается в память по мере необходимости, сокращает размер исполняемого модуля.

· Компоновщик (Linker):

o Компоновка нескольких объектных модулей в один исполняемый модуль

o Использует таблицы символов и библиотеки.

Расширенный набор средств разработки

· Отладчик:

o Трассировка.

o Отслеживание, установка, изменение переменных.

o Установка и удаление контрольных точек (breakpoints, watchpoints).

o Условный и безусловный останов.

· Профайлер:

o Сбор характеристик работы программы:

§ Время выполнения отдельных фрагментов (обычно подпрограмм).

§ Число верно предсказанных условных переходов.

o Используются для анализа проведения программы (граф вызовов) и оптимизации программы

· Статический анализатор кода:

o Анализ программы без ее выполнения.

o Warnings для компиляторов С/С++:

§ Чтение неинициализированной переменной.

§ Возможность выхода за границы массива.

§ Опасность недокументированного поведения.

ИнтегрированнаясредаразработкиIDE (Integrated development environment) или IDDE(Integrated development& debug environment).

Включает в себя:

· Текстовый редактор.

· Компилятор.

· Компоновщик (средства автоматизации сборки проекта).

· Отладчик.

Содержит средства для:

· Интеграции с системами управления версиями.

· Конструирования GUI.

· Поддержки ООП (браузер классов, инспектор объектов, диаграмма иерархии классов)

Бывают:

· "Многоязычные" (Visual Studio, IntelliJ IDEA, Eclipse, Code::Blocks).

· "Одноязычные" (Delphi, Dev-C++)

 

Структура программы на языке Си.

Ответ:

Исходная программа:

· Директивы препроцессора.

· Указания компилятору.

· Объявления:

o Имена и атрибуты используемых переменных, функций и типов.

· Определения:

o Определения переменных:

§ В дополнение к типу задаёт начальное значение.

o Определения функций:

§ Имя функции, формальные параметры, возвращаемая величина.

§ Объявления.

§ Операторы.

Структура программы на языке С:

· Подключение заголовочных файлов.

· Описание констант, определение макросов.

· Описание глобальных переменных.

· Объявление функций.

· Определение функций.

· Описание локальных переменных функций.

· Функция main():

o Точка входа в функции.

o Точка выхода из функции.










Последнее изменение этой страницы: 2018-04-12; просмотров: 1318.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...