Стивен Прата - Язык Си - руководство для начинающих стр 4.

Шрифт
Фон

Компиляция Си-программы на IBM PC (компиляторы Microsoft С и Lattice С)

Так же как и прежде, мы считаем, что исходная программа содержится в файле inform.с. Наша первая команда выглядит следующим образом:

mcl inform

(Компилятор интерпретирует строку символов inform как inform.с.) Если ошибок нет, то в результате будет получен промежуточный файл с именем inform.q. Затем мы набираем на клавиатуре следующую команду:

mc2 inform

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

link с inform

по завершении которой создается файл inform.ехе. Наша цель достигнута получен файл, содержащий выполняемую программу. Если мы затем введем команду

inform. ехе

или просто

inform

то наша программа начнет выполняться.

РИС. 1.5. Создание Си-программы при помощи компиляторов Microsoft С и Lattice С.

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

Что здесь нового? Во-первых, новым является то, что вводится файле именем inform.obj. Поскольку в нем содержится машинный код, непонятно, почему мы не остановились в этом месте? Ответом может служить то, что полная программа включает в себя части, которые мы не писали. Например, мы использовали команду printf, являющуюся программой, помещенной в Си-библиотеку. Вообще говоря, может возникать необходимость использовать в программе стандартные процедуры, помещенные в различные библиотеки. Эта потребность приводит к использованию второго нового понятия команды link.

Программа link является частью операционной системы IBM POS. Она связывает наш объектный код (находящийся в файле inform.obj) с некоторыми стандартными процедурами, содержащимися в файле c.obj, и, кроме того, осуществляет поиск требуемых объектных модулей в той библиотеке, которую мы указываем (программа link запрашивает требуемое имя во время выполнения); в данном случае это будет библиотека с именем lc.lib. Затем указанная программа объединяет все найденные модули в одну полную программу.

Программа сс, работающая под управлением ОС UNIX, во время выполнения проходит аналогичную последовательность шагов; отличие состоит только в том, что она "скрывает" этот факт от нас, уничтожая файл с объектным модулем после его использования для получения полной программы. (Но в случае необходимости в ответ на соответствующий запрос компилятор выдаст нам объектный файл под именем inform.о.)

Альтернативный способ трансляции

Утомленный читатель может воскликнуть: "Как, неужели еще один код?" Поэтому сразу же поясним: ассемблерный код тесно связан с машинным кодом. Фактически это тот же самый код, только представленный в символьном виде. Например, JMP может соответствовать коду 11101001, являющемуся частью машинной команды, в результате выполнения которой осуществляется "перескок" (переход) к другой ячейке. (Вы, вероятно, представляете себе компьютер, снующий по пчелиным сотам, а мы имеем в виду другие ячейки памяти.) Программисты не без основания считают, что ассемблерный код более легок для восприятия, чем чисто машинный код, а задача перевода с одного языка на другой вполне может быть возложена на специальную программу, называемую ассемблером.

Почему компиляция?

НЕКОТОРЫЕ СОГЛАШЕНИЯ

Вид шрифта

printf (" Здравствуйте!

\n ");

Цвет

Устройство ввода-вывода

Функциональные клавиши

Кроме того, мы будем упоминать управляющие символы, назы вая их [CTRL/d]. Это обозначение указывает на то, что необходимо нажать клавишу [d], держа одновременно нажатой клавишу control.

Наша вычислительная система

В тех случаях, когда мы говорим о программах, работающих в среде ОС UNIX, мы имеем в виду версию BSD 4.1 этой операционной системы, созданную в Калифорнийском университете (Беркли) и функционирующую на ЭВМ VAX 11/750.

СОВЕТ

Теперь мы с вами готовы приступить к изучению гл. 2.

2. Введение в язык Си

ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ

#include

main() /*простая программа*/

{

int num;

num = l;

printf ("Я простая");

printf ("вычислительная машина.\n");

printf ("Мое любимое число %d, потому что оно самое первое.\n", num);

}

Если вы считаете, что программа должна вывести нечто на экран дисплея, то вы совершенно правы! Несколько труднее понять, что же появится на экране на самом деле, поэтому давайте выполним программу на ЭВМ и посмотрим к чему это приведет.

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

Мы выполним два просмотра текста программы: во время первого объясним смысл каждой строки, а во время второго рассмотрим дополнительные вопросы и детали.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке