Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Этапы подготовки программы

Читайте также:
  1. v на этапе подготовки проекта
  2. Альтернатива выбора производственной программы
  3. Английская революция 17 в. (предпосылки, основные этапы и начало)
  4. Базовый синтаксис С#. Структура программы
  5. Важность целенаправленной подготовки студентов к трудоустройству с учетом лучшего мирового опыта и законов рыночной экономики
  6. Введение. ОСНОВНЫЕ ЭТАПЫ И ОРГАНИЗАЦИЯ ПРОЕКТИРОВАНИЯ ХИМИЧЕСКИХ ПРОИЗВОДСТВ
  7. Великая Отечественная война 1941-1945 гг. Причины, осн. этапы, цена победы, исторические уроки.
  8. Виды экономических систем (этапы развития экономики)
  9. ВОЗНИКНОВЕНИЕ И ПЕРВЫЕ ЭТАПЫ РАЗВИТИЯ РЕЧИ РЕБЕНКА
  10. Воплощение образа в ходе ведения досуговой программы и анализ результативности.

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

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

При выборе модульной структуры должны учитываться следую­щие основные соображения:

Функциональность— модуль должен выполнять законченную функцию

Несвязность— модуль должен иметь минимум связей с другими модулями, связь через глобальные переменные и области памяти нежелательна

Специфицируемость— входные и выходные параметры модуля должны четко формулироваться

Программа пишется в виде исходного модуля.

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

Первым (не для всех языков программирования обязательным) этапом подготовки программы является обработка ее Макропроцессо­ром (или Препроцессором). Макропроцессор обрабатывает текст программы и на выходе его получается новая редакция текста. В боль­шинстве систем программирования Макропроцессор совмещен с транс­лятором, и для программиста его работа и промежуточный ИМ «не видны».

Следует иметь в виду, что Макропроцессор выполняет обработку текста, это означает, с одной стороны, что он «не понимает» операторов языка программирования и «не знает» переменных программы, с другой, что все операторы и переменные Макроязыка (тех выражений в про­грамме, которые адресованы Макропроцессору) в промежуточном ИМ уже отсутствуют и для дальнейших этапов обработки «не видны».

Так, если Макропроцессор заменил в программе некоторый текст А на текст В, то транслятор уже видит только текст В, и не знает, был этот текст написан программистом «своей рукой» или подставлен Макропро­цессором.

Следующим этапом является трансляция.

Трансляция— преобразование программы, представленной на од­ном языке программирования, в программу на другом языке программи­рования, в определенном смысле равносильную первой.

Как правило, выходным языком транслятора является машинный язык целевой вычислительной системы. (Целевая ВС — та ВС, на кото­рой программа будет выполняться.)

Машинный язык— язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее не­посредственно техническими средствами обработки информации.

Трансляторы— общее название для программ, осуществляющих трансляцию. Они подразделяются на Ассемблеры и Компиляторы — в зависимости от исходного языка программы, которую они обрабатывают. Ассемблеры работают с Автокодами или языками Ассемблера, Ком­пиляторы — с языками высокого уровня.

Автокод— символьный язык программирования, предложения которого по своей структуре в основном подобны командам и обрабаты­ваемым данным конкретного машинного языка.

Язык Ассемблера— язык программирования, который представ­ляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня (обычно включает в себя макро­средства).

Язык высокого уровня— язык программирования, понятия и структура которого удобны для восприятия человеком.

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

Поскольку результатом трансляции является модуль на языке, близком к машинному, в нем уже не остается признаков того, на каком исходном языке был написан программный модуль. Это создает принци­пиальную возможность создавать программы из модулей, написанных на разных языках. Специфика исходного языка, однако, может сказываться на физическом представлении базовых типов данных, способах обраще­ния к процедурам/функциям и т.п. Для совместимости разноязыковых модулей должны выдерживаться общие соглашения. Большая часть объ­ектного модуля — команды и данные машинного языка именно в той форме, в какой они будут существовать во время выполнения програм­мы. Однако, программа в общем случае состоит из многих модулей. По­скольку транслятор обрабатывает только один конкретный модуль, он не может должным образом обработать те части этого модуля, в которых за­программированы обращения к данным или процедурам, определенным в другом модуле. Такие обращения называются внешними ссылками. Те места в объектном модуле, где содержатся внешние ссылки, транслиру­ются в некоторую промежуточную форму, подлежащую дальнейшей об­работке. Говорят, что объектный модуль представляет собой программу на машинном языке с неразрешенными внешними ссылками. Разреше­ние внешних ссылок выполняется на следующем этапе подготовки, ко­торый обеспечивается Редактором Связей (Компоновщиком). Редактор Связей соединяет вместе все объектные модули, входящие в программу. Поскольку Редактор Связей «видит» уже все компоненты программы, он имеет возможность обработать те места в объектных модулях, которые содержат внешние ссылки. Результатом работы Редактора Связей явля­ется загрузочный модуль.

Загрузочный модуль— программный модуль, представленный в форме, пригодной для загрузки в оперативную память для выполнения.

Загрузочный модуль сохраняется в виде файла на внешней памя­ти. Для выполнения программа должна быть перенесена (загружена) в оперативную память. Иногда при этом требуется некоторая дополни­тельная обработка (например, настройка адресов в программе на ту об­ласть оперативной памяти, в которую программа загрузилась). Эта функция выполняется Загрузчиком, который обычно входит в состав операционной системы. Возможен также вариант, в котором редактирование связей выполняется при каждом запуске программы на выполнение и совмещается с загрузкой. Это делает Связывающий Загрузчик. Вариант связывания при запуске более расходный, т.к. затраты на связывание тиражируются при каждом запуске. Но он обеспечивает:

* большую гибкость в сопровождении, так как позволяет менять отдельные объектные модули программы, не меняя остальных модулей;

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

Вариант интерпретации подразумевает прямое исполнение исходного модуля.

Интерпретация— реализация смысла некоторого синтаксически законченного текста, представленного на конкретном языке.

Интерпретатор читает из исходного модуля очередное предложение программы, переводит его в машинный язык и выполняет. Все затраты на подготовку тиражируются при каждом выполнении, следовательно, интерпретируемая программа принципиально менее эффективна, чем транслируемая. Однако, интерпретация обеспечивает удобство разработки, гибкость в сопровождении и переносимость.

Не обязательно подготовка программы должна вестись на той же вычислительной системе и в той же операционной среде, в которых программа будет выполняться. Системы, обеспечивающие подготовку про­грамм в среде, отличной от целевой называются кросс системами. В кросс-системе может выполняться вся подготовка или ее отдельные этапы:

* Макрообработка и трансляция

* Редактирование связей

* Отладка

Типовое применение кросс-систем — для тех случаев, когда целе­вая вычислительная среда просто не имеет ресурсов, необходимых для подготовки программ, например, встроенные системы. Программные средства, обеспечивающие отладку программы на целевой системе мож­но также рассматривать как частный случай кросс-системы.


<== предыдущая страница | следующая страница ==>
Системное программирование | Программирование на языке Ассемблера

Дата добавления: 2014-03-11; просмотров: 679; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.