- •9.1. Способы обмена данными между устройствами
- •9.2. Методы передачи информации между устройствами
- •Общая шина
- •Регистр адреса
- •Цепи данных
- •Интерфейс пу
- •Канал ввода-вывода
- •Канал ввода-вывода
- •9.4. Интерфейсы периферийных устройств.
- •Данные от процессора
- •Данные в процессор
- •Регистр передатчика очищен
- •Регистр приёмника заполнен
- •10. Программное обеспечение мпс.
- •10.1. Понятие программного обеспечения.
- •10.2. Алгоритмизация задач и язык sdl.
- •10.3. Уровни языков программирования.
- •10.4. Средства разработки прикладных программ.
- •Транслятор
- •10.5. Средства отладки прикладных программ.
- •10.6. Понятие надёжности мпс.
- •10.7. Контроль передачи информации.
- •10.8. Контроль арифметических операций.
- •10.10. Взаимодействие систем технического обслуживания.
- •10.11. Понятие операционной системы.
- •10.12. Функции файловой системы.
- •10.13. Организация файлов.
- •Записи ди-ректория (каталог, папка)
- •10.14. Распределение памяти для размещения файлов.
- •Распределение при помощи списков секторов.
- •Директорий
- •Директорий
- •Директорий
- •10.6. Организация мультипрограммного режима работы мпс.
- •Входные очереди программ разных классов в озу на дисках
- •Выходные очереди программ разных классов в озу на дисках
10.4. Средства разработки прикладных программ.
В процессе разработки прикладных программ можно выделить несколько основных этапов:
Создание текстового файла, т.е. написание исходного текста программы на выбранном языке программирования в соответствии с предварительно разработанной схемой алгоритма.
Трансляция (компиляция) исходной программы для получения объектного файла или объектного модуля. Использование понятия модуля подчёркивает тот факт, что текстовый файл программы может содержать несколько частей (модулей), допускающих автономную трансляцию на машинный язык.
Компоновка (объединение) объектных модулей в единый загрузочный файл с учётом характеристик используемых аппаратных средств.
Загрузка программы в оперативную память и её исполнение.
На каждом этапе используются соответствующие инструментальные средства:
Ввод исходной
программы
Редактор текста
дому из этих средств.
1 этап
2 этап
Исходная программа
(модуль)
бой программу, предназна-
Транслятор
ченную для создания и
мо-
Объектная программа
(модуль)
рамм.
Исходная программа
является текстовым файлом
(последовательностью строк
буквенно-цифровых симво-
лов).
Исходная программа,
обычно вводимая с клавиа-
туры, сначала записывается
в
Компоновщик
Загрузчик
ОЗУ МПС
Средства отладки
3 этап
4 этап
Загрузочная
про-грамма (модуль)
Затем она может быть переписана в постоянную память в виде файла (часть объёма памяти, содержимому которой присваивается некоторое имя).
При необходимости корректировки (редактирования) исходной программы соответствующий файл загружается из постоянной памяти в буфер ЭРТ.
Отредактированный текст может быть снова переписан в постоянную память в виде файла.
Редактор оперирует исходной программой как текстом, не учитывая синтаксиса (набор грамматических правил) языка программирования, на котором составляется данная программа.
Это позволяет использовать один и тот же редактор текста для создания и модификации программ, написанных на разных языках программирования.
Транслятор ассемблера и компилятор – это специальные программы, предназначенные для трансляции исходной программы с языка ассемблера или одного из языков высокого уровня, соответственно, на машинный язык.
В результате работы этих программ текстовые файлы преобразуются в объектные файлы, содержащие машинные (или объектные) коды соответствующих операторов используемых языков программирования.
Кроме того, транслятор ассемблера и компилятор могут выдавать листинги исходной и объектной программ, сообщения об ошибках и другие виды диагностической информации.
Трансляторы ассемблера могут быть автопрограммами (или резидентными), а также кросс-программами.
Транслятор ассемблера, реализованный непосредственно на МПС, для которой производится трансляция исходной программы в объектную программу, называют автоассемблером или резидентным ассемблером.
Если исходная программа, написанная для одной МПС, транслируется в объектную на другой МПС, то такие трансляторы ассемблера называют кросс-ассемблерами.
Особенностью компиляторов языков высокого уровня является автоматическая оптимизация исходной программы, но только с точки зрения скорости вычислений, не учитывая особенностей архитектуры конкретного МП.
Последнее обстоятельство обусловлено одним из основных требований, предъявляемых к компиляторам языков высокого уровня: универсальность, т.е. независимость от типа МП.
Поскольку компилятор отделяет МП от программиста, то последний не может применять приёмы эффективного программирования языков низкого уровня.
В результате объём объектных программ, полученных с помощью компилятора, увеличивается примерно на (20…40)% по сравнению с объёмом программ, полученных с помощью транслятора ассемблера.
Таким образом, сокращение времени разработки прикладных программ за счёт использования языков высокого уровня связано с увеличением объёма объектных программ.
Из всех методов трансляции ассемблера и компиляции наибольшее применение получила двухпроходная схема. Трансляция происходит путём двухразового считывания исходной программы.
При первом проходе производится просмотр каждой строки с целью формирования таблицы имён (меток, мнемоник команд, директив и т.п.), встречающихся в исходной программе, а также адресов или численных значений.
Полученные данные анализируются на предмет соответствия синтаксису данного языка и на экран дисплея выводятся сообщения об обнаруженных ошибках в синтаксисе языка и перерасходе ресурсов транслятора по числу переменных, меток, констант.
При втором проходе все строки программы просматриваются вновь, но теперь с целью трансляции на машинный язык каждой команды и используемых данных, а также анализа на предмет соответствия семантике данного языка.
В результате формируется объектная программа, а на экран дисплея выводятся сообщения об обнаруженных ошибках в семантике языка.
Наконец два последних этапа - компоновщики и загрузчики.
Объектная программа, созданная транслятором ассемблера или компилятором, как правило, не учитывает физические адреса загрузки программы в микропроцессорной системе, т.е. является неподготовленной для её загрузки и последующего выполнения.
Кроме того, в ряде случаев большая исходная программа подразделяется на несколько исходных модулей, разработка которых производится разными программистами.
В этом случае размер каждого модуля остаётся неизвестным до тех пор, пока не закончатся его разработка и отладка.
Так вот, формирование единого загрузочного модуля (т.е. программы, готовой для загрузки и последующего исполнения) из нескольких объектных модулей и привязка этого модуля к фактическим адресам загрузки конкретной МПС осуществляется программами компоновщика и загрузчика, соответственно.
Компоновщик обеспечивает объединение или компоновку всех объектных модулей в единый модуль.
Это объединение происходит посредством установки соответствия между входными и выходными адресами каждого объектного модуля, т.е. установления их взаимной связи.
Поэтому компоновщик часто именуют редактором связей.
Загрузчик устанавливает фактические адреса размещения в памяти МПС единой объектной программы, сформированной компоновщиком.
В результате создаётся программа, готовая для непосредственного использования в конкретной МПС.
Нередко программы компоновщика и загрузчика объединяются в единую программу.