4.Создание объектного модуля
Объектный модуль – программа пользователя, преобразованная в машинные команды без текстов подпрограмм (библиотечных элементов) и оформленная в виде файла.
Объектный модуль создается из исходного специализированной программой интегрированного пакета – транслятором (компилятором). Схема получения объектного модуля:
Получение объектного модуля реализуется соответствующей командой пользователя интегрированной среде Borland C++. В качестве команд трансляции используются:
-
Project\Compile (Проект\Компилировать) – активизация пункта Project главного меню, а затем подпункта Compile;
-
горячие клавиши (указаны справа в меню) Alt + F9;
-
кнопка на панели инструментов.
Команда предписывает пакету последовательность действий:
-
активизировать требуемый компонент IDE (транслятор);
-
проанализировать спецификацию файла и содержимое активного окна;
-
сформировать окно сообщений «Translating имя файла» о прохождении трансляции;
-
выполнить построчное преобразование директив препроцессора и операторов программы с алгоритмического языка в соответствующие машинные команды;
-
выдать в окно «Translating имя файла Complete» сообщение об окончании трансляции с указанием количества ошибок, если они найдены;
-
отобразить окно «Message» с указанием спецификации транслируемого файла и расшифровкой найденных ошибок;
-
создать файл предварительной компиляции, из содержимого директив (если они используются);
-
сформировать результаты преобразования тела программы в объектный модуль.
Активизация транслятора производится автоматически после ввода команды компиляции. Копия транслятора загружается в ОП и, активизируясь, создает там же собственный буфер трансляции, а на экране монитора – окно «Translating имя файла».
Анализ заголовка активного окна определяет спецификацию файла, подлежащего обработке. В буфер транслятора загружается его копия и начинается преобразование:
Основные компоненты программы определяют последовательность действий транслятора. Директивы препроцессора преобразуются в отдельный файл bcwdef.csm, создаваемый первым. Тело программы – в объектный модуль. Спецификация объектного модуля формируется автоматически из спецификации файла исходного модуля с заменой расширения «срр» на «obj».
Результат – появление на диске двух файлов: предварительной компиляции bcwdef.csm и созданного объектного модуля имя.obj.
Внимание! Продолжительность трансляции и размер файла предварительной компиляции зависят от количества и сложности подключаемых директив. Для большинства тривиальных задач пользователя объемы содержимого директив и собственные тела программы различаются на порядки. Поэтому начинающему пользователю рекомендуется использовать минимально необходимое их количество.
Например, окно сообщений:
подтверждает выполнение трансляции исходного модуля.
Окно определяет четыре группы компонентов, обеспечивающих контроль выполнения трансляции:
-
Status (состояние): Compiling… (компиляция);
-
Files – файлы, участвующие в трансляции:
-
Main file (главная функция);
-
Compiling (компилируемый в данный момент);
-
Information (информация);
-
Statistics (статистика) Total (всего) Current (сейчас):
-
Lines (строк);
-
Warnings (предупреждений);
-
Errors (ошибок);
-
элементы управления.
Так окно трансляции файла U:\Иванов\linie.cpp, расположенного в активном окне редактора и содержащего три директивы, определяет значительные объемы трансляции (более 90000 строк).
При этом в папке Иванов начинают создаваться два файла: предварительный bcwdef.csm и объектный – linie.obj.
Окончание процесса компиляции сопровождается изменением заголовка и некоторых компонентов диалогового окна «Translating имя файла»:
Несоответствия синтаксису алгоритмического языка, найденные при компиляции программы подразделяются на ошибки и предупреждения.
Ошибки – нарушения правил записи типовых структур, которые может исправить только пользователь.
Предупреждения – некорректные языковые структуры, однозначно исправляемые транслятором. Чаще всего предупреждения игнорируются пользователем (в дальнейшем это может привести к получению неверного результата).
Анализ двух последних строк окна: Warnings (предупреждения), Errors (ошибки) определяет их наличие (отсутствие). Нулевые значения в столбцах Total (всего) и Current (сейчас) свидетельствуют об отсутствии ошибок и предупреждений.
Фиксация ошибок и предупреждений подтверждается появлением окна сообщений «Message». Окно содержит информацию о компиляции конкретного файла и расшифровку каждой найденной ошибки и предупреждения:
Активизация окна «Message» осуществляется по типовой методике. Простейший вариант – щелчок левой клавишей мыши на заголовке окна.
Информация об ошибках и предупреждениях выводится построчно: восклицательный знак (красного или желтого цвета соответственно), имя файла, расположение в тексте (номер строки и позиции в ней в круглых скобках через запятую), пояснение.
Указание мышью конкретной ошибки (предупреждения) в окне «Message» автоматически подсвечивает (желтым цветом) в окне редактирования соответствующую строку.
Перебор сообщений в окне «Message» осуществляется
-
командами Search\Previous Message... (Поиск\Предыдущее сообщение) и Search\Next Message... (Поиск\Следующее сообщение);
-
горячими клавишами Alt + F7 и Alt + F8,
-
указанием мышью;
-
клавишами и .
Перемещение указателя по строкам в окне «Message», приводит к подсвечиванию строк с ошибками в окне редактирования.
Исправление найденных ошибок выполняется в окне текстового редактора по типовой методике. Исправленный текст необходимо оформить (сохранить) в файл исходного модуля, а затем повторить этап компиляции.