Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васин Д.Ю. - Язык программирования Си. Курс лек...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.16 Mб
Скачать
    1. Пользование компилятором

Компилятор представляет собой системную программу, которая преобразует некоторый «язык высокого уровня» в язык компьютера  язык ассемблера или машинный язык. Интерпретатору Бейсика этого не требуется, поскольку он непосредственно исполняет каждый оператор. Интерпретаторы хороши при написании небольших программ, не требующих многократного исполнения. Компиляторы более удобны для разработки больших программ, которые должны исполняться много раз. Это обусловлено тем, что интерпретация программы осуществляется намного медленнее исполнения на компьютере ранее откомпилированной программы.

По сравнению с интерпретатором при работе с компилятором требуется выполнить несколько дополнительных операций (рис.1).

Рисунок 1

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

    1. Внутренняя структура программы на языке Си для ibm pc (альтернативные модели распределения памяти)

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

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

Таблица 1 Альтернативные модели распределения памяти

Модель распределения памяти

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

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

Малая модель

64К

64К

Модель больших кодов

До 1М

64К

Модель больших данных

64К

До 1М

Большая модель

До 1М

До 1М

Модель распределения памяти задается на стадии компиляции путем указания соответствующих параметров при вызове компилятора языка Си. Каждое значение параметра, задающего модель распределения памяти, заставляет компилятор генерировать несколько иные машинные коды. Для большинства компиляторов это влечет за собой требование, чтобы при раздельной компиляции программ на языке Си задавалась одна и та же модель памяти.

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