Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВТ_4 часть.doc
Скачиваний:
10
Добавлен:
16.09.2019
Размер:
550.91 Кб
Скачать

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

В процессе разработки прикладных программ можно выделить несколько основных этапов:

  1. Создание текстового файла, т.е. написание исходного текста программы на выбранном языке программирования в соответствии с предварительно разработанной схемой алгоритма.

  2. Трансляция (компиляция) исходной программы для получения объектного файла или объектного модуля. Использование понятия модуля подчёркивает тот факт, что текстовый файл программы может содержать несколько частей (модулей), допускающих автономную трансляцию на машинный язык.

  3. Компоновка (объединение) объектных модулей в единый загрузочный файл с учётом характеристик используемых аппаратных средств.

  4. Загрузка программы в оперативную память и её исполнение.

На каждом этапе используются соответствующие инструментальные средства:

Ввод исходной программы

Редактор текста

Дадим краткую характеристику каж-

дому из этих средств.

1 этап

2 этап

Экранный редактор те-

Исходная программа (модуль)

кста (ЭРТ) представляет со-

бой программу, предназна-

Транслятор

ченную для создания и мо-

Объектная программа (модуль)

дификации исходных прог-

рамм.

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

является текстовым файлом

(последовательностью строк

буквенно-цифровых симво-

лов).

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

обычно вводимая с клавиа-

туры, сначала записывается

в

Компоновщик

Загрузчик

ОЗУ МПС

Средства отладки

3 этап

4 этап

Загрузочная про-грамма (модуль)

оперативный буфер ЭРТ, организуемый в оперативной памяти.

Затем она может быть переписана в постоянную память в виде файла (часть объёма памяти, содержимому которой присваивается некоторое имя).

При необходимости корректировки (редактирования) исходной программы соответствующий файл загружается из постоянной памяти в буфер ЭРТ.

Отредактированный текст может быть снова переписан в постоянную память в виде файла.

Редактор оперирует исходной программой как текстом, не учитывая синтаксиса (набор грамматических правил) языка программирования, на котором составляется данная программа.

Это позволяет использовать один и тот же редактор текста для создания и модификации программ, написанных на разных языках программирования.

Транслятор ассемблера и компилятор – это специальные программы, предназначенные для трансляции исходной программы с языка ассемблера или одного из языков высокого уровня, соответственно, на машинный язык.

В результате работы этих программ текстовые файлы преобразуются в объектные файлы, содержащие машинные (или объектные) коды соответствующих операторов используемых языков программирования.

Кроме того, транслятор ассемблера и компилятор могут выдавать листинги исходной и объектной программ, сообщения об ошибках и другие виды диагностической информации.

Трансляторы ассемблера могут быть автопрограммами (или резидентными), а также кросс-программами.

Транслятор ассемблера, реализованный непосредственно на МПС, для которой производится трансляция исходной программы в объектную программу, называют автоассемблером или резидентным ассемблером.

Если исходная программа, написанная для одной МПС, транслируется в объектную на другой МПС, то такие трансляторы ассемблера называют кросс-ассемблерами.

Особенностью компиляторов языков высокого уровня является автоматическая оптимизация исходной программы, но только с точки зрения скорости вычислений, не учитывая особенностей архитектуры конкретного МП.

Последнее обстоятельство обусловлено одним из основных требований, предъявляемых к компиляторам языков высокого уровня: универсальность, т.е. независимость от типа МП.

Поскольку компилятор отделяет МП от программиста, то последний не может применять приёмы эффективного программирования языков низкого уровня.

В результате объём объектных программ, полученных с помощью компилятора, увеличивается примерно на (20…40)% по сравнению с объёмом программ, полученных с помощью транслятора ассемблера.

Таким образом, сокращение времени разработки прикладных программ за счёт использования языков высокого уровня связано с увеличением объёма объектных программ.

Из всех методов трансляции ассемблера и компиляции наибольшее применение получила двухпроходная схема. Трансляция происходит путём двухразового считывания исходной программы.

При первом проходе производится просмотр каждой строки с целью формирования таблицы имён (меток, мнемоник команд, директив и т.п.), встречающихся в исходной программе, а также адресов или численных значений.

Полученные данные анализируются на предмет соответствия синтаксису данного языка и на экран дисплея выводятся сообщения об обнаруженных ошибках в синтаксисе языка и перерасходе ресурсов транслятора по числу переменных, меток, констант.

При втором проходе все строки программы просматриваются вновь, но теперь с целью трансляции на машинный язык каждой команды и используемых данных, а также анализа на предмет соответствия семантике данного языка.

В результате формируется объектная программа, а на экран дисплея выводятся сообщения об обнаруженных ошибках в семантике языка.

Наконец два последних этапа - компоновщики и загрузчики.

Объектная программа, созданная транслятором ассемблера или компилятором, как правило, не учитывает физические адреса загрузки программы в микропроцессорной системе, т.е. является неподготовленной для её загрузки и последующего выполнения.

Кроме того, в ряде случаев большая исходная программа подразделяется на несколько исходных модулей, разработка которых производится разными программистами.

В этом случае размер каждого модуля остаётся неизвестным до тех пор, пока не закончатся его разработка и отладка.

Так вот, формирование единого загрузочного модуля (т.е. программы, готовой для загрузки и последующего исполнения) из нескольких объектных модулей и привязка этого модуля к фактическим адресам загрузки конкретной МПС осуществляется программами компоновщика и загрузчика, соответственно.

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

Это объединение происходит посредством установки соответствия между входными и выходными адресами каждого объектного модуля, т.е. установления их взаимной связи.

Поэтому компоновщик часто именуют редактором связей.

Загрузчик устанавливает фактические адреса размещения в памяти МПС единой объектной программы, сформированной компоновщиком.

В результате создаётся программа, готовая для непосредственного использования в конкретной МПС.

Нередко программы компоновщика и загрузчика объединяются в единую программу.