Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции (Ведищев) + шпоры к экзамену / лекции по программированию за 1 курс.doc
Скачиваний:
174
Добавлен:
20.06.2014
Размер:
805.38 Кб
Скачать

Программа на языке высокого уровня.

Этапы существования ПО (не жизненный цикл программы):

Подвергается трансляции (процедура перевода с языка высокого уровня на машинный язык.) В ходе трансляции может использоваться переход на промежуточный язык – кросстрансляции . в качестве промежуточного языка может использоваться язык Ассемблера.

Ассемблер – программа, осуществляющая перевод с языка ассемблера на машинный язык.

Машинный язык – язык, использующий машинные команды, записанные в формате воспринимаемом конкретным вычислительным устройством.

Язык ассемблера представляет собой мнемонимическую запись машинного языка (add-сложить).

Транслятор – программа, выполняющая процедуру трансляции. 2 вида:

  1. компилятор;

  2. интерпретатор.

    1. Компилятор – осуществляет перевод текста программы на машинный язык целиком.

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

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

Загрузчик программ, осуществляющих размещение исполняемого кода и данных в памяти ЭВМ и передающий управление первой исполняемой команде программы.

В случае персональных ЭВМ функции загрузчика распределены между ОС и кодом, включаемым в исполняемый файл.

Исполнение программы начинается с загрузки в регистр счетчика исполняемых команд ЦП, адреса первой исполняемой команды программы.

Устройство управления считывает по этому адресу код команды, в соответствии с ним считывает значения операндов (если они есть), передает код и операнды АЛУ, которое выполняет необходимые операции.

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

Процедура повторяется до тех пор, пока не будет встречена команда stop. Исполняемая программа обычно завершается возвратом управления программе, вызвавшей данную программу (ОС).

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

Входом является программа на языке программирования. Результат – построчно выполняемая команда.

Пример машинной команды, языка высокого уровня.

Оператор goto – безусловного перехода.

Goto_«метка»;

«Метка» - идентификатор, определяющий точку в тексте программы. В языке С с помощью метки осуществляются переходы на определенный оператор или пустой оператор.

Goto М;

А=В+С; после компиляции

М:А=Д+Е; goto будет переведен в jump. В качестве операнда из программы должен быть адрес. Метка М после компиляции получит свое значение как адрес относительно начала исполняемого кода, начиная с которого после перевода на машинный язык будут записаны команды, соответствующие А=Д+Е. (М на относительную ссылку). При загрузке размещения в памяти относительная ссылка будет заменена действительным адресом (абсолютной ссылкой в каком-либо формате). После того, как в счетчик команд попадет адрес команды jump, то произойдет загрузка значения абсолютного адреса метки М в регистр счетчика команд, представляет собой безусловный переход

На оператор А=Д+Е. собственно оператор А=Д+Е приведет к появлению машинных команд: сложения, пересылке.