C. Бочков - Язык программирования Си для персонального компьютера

Здесь есть возможность читать онлайн «C. Бочков - Язык программирования Си для персонального компьютера» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 1990, ISBN: 1990, Издательство: СП Диалог, Радио и связь, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования Си для персонального компьютера: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования Си для персонального компьютера»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга содержит полное описание наиболее распространенных реализаций языка программирования Си на 16-разрядных микроЭВМ, совместимых с IBM PC. Приведено описание стандартных библиотек языка.
Для слушателей учебных курсов в области программирования, разработчиков программного обеспечения, а также студентов соответствующих специальностей вузов. Может быть использовано как техническая документация и справочное пособие для широкого круга программистов, как профессионалов, имеющих большой опыт работы на языке Си, так и начинающих программировать на Си.

Язык программирования Си для персонального компьютера — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования Си для персонального компьютера», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Работая в максимальной модели, программист должен быть осторожен в применении операции sizeofи при вычитании указателей. В языке Си определено, что значение операции sizeofимеет тип unsigned int, однако число байтов в hugeмассиве может быть представлено только типом unsigned long. Для получения правильного значения в этом случае следует применять приведение типа операции sizeof:

(unsigned long)sizeof(huge_item)

Аналогично, результат вычитания указателей определен в языке Си как значение типа int. При вычитании указателей типа hugeможет оказаться, что результат имеет тип long. В этом случае также необходимо применить приведение типа:

(long)(huge_ptr1—huge_ptr2)

Модификация стандартной модели памяти

Работая в некоторой стандартной модели памяти, программист может в той или иной мере модифицировать ее, применяя в объявлениях модификаторы near, farи huge. Правила интерпретации объявлений с модификаторами рассмотрены в разделе 3.3.3.4 "Модификаторы near, far, huge".

Объявление данных

Если непосредственно за ключевым словом near, farили hugeследует идентификатор, то это значит, что соответствующий элемент данных будет размещен в стандартном сегменте (для near) или может быть размещен в другом сегменте данных (для farили huge). Например, объявление

char far х;

сообщает, что адрес объекта химеет тип far.

Если же непосредственно за ключевым словом near, farили hugeследует признак указателя (звездочка), то это значит, что соответствующий указатель будет хранить адрес типа near, типа farили типа huge, соответственно. Например, объявление

char far *р;

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

char * far р;

объявляет ркак указатель на char, причем сам указатель рможет находиться в любом сегменте, и его адрес имеет тип far. Объявление

char far * far р;

сообщает, что указатель рможет указывать на объекты с адресом типа far. Адрес самого указателя ртакже имеет тип far.

Примеры:

char а[3000]; /* пример 1: малая модель */

char far b[30000]; /* пример 2: малая модель */

char a[3000]; /* пример 3: большая модель */

char near b[3000]; /* пример 4: большая модель */

char huge a[70000]; /* пример 5: малая модель */

char huge *pa; /* пример 6: малая модель */

char *pa; /* пример 7: малая модель */

char far *pb; /* пример 8: малая модель */

char far **pa; /* пример 9: малая модель */

char far **pa; /* пример 10: большая модель */

char far *near *pb; /* пример 11: любая модель */

char far *far *pb; /* пример 12: любая модель */

В примере 1 массиву авыделяется память в стандартном сегменте данных; массиву bво втором примере память может быть выделена в любом из сегментов данных программы. Поскольку оба объявления сделаны в малой модели, то, вероятно, массив асодержит часто используемые данные, которые для ускорения доступа должны располагаться в стандартном сегменте, а массив bсодержит редко используемые данные, которые могут выйти за пределы 64-Кбайтного сегмента данных. Можно было бы использовать здесь другую модель памяти, в которой адрес данных по умолчанию имел бы тип far, однако для сохранения быстрого доступа к массиву алучше сохранить малую модель, а адрес массива bобъявить как far.

В примере 2 указан большой размер массива b, поскольку более вероятно, что программист будет модифицировать тип адреса объекта большой длины, который может не поместиться в текущий сегмент.

В примере 3, очевидно, скорость доступа к массиву ане является критичной; независимо от того, попадет он в стандартный сегмент или не попадет, обращение к нему всегда будет осуществляться по 32-битовому адресу. В примере 4 массиву bс помощью модификатора nearявно назначен стандартный сегмент, с целью ускорения доступа к нему в большой модели.

В примере 5 массив адолжен быть явно объявлен как huge, поскольку его размер превышает 64 Кбайта. Использование модификатора hugeвместо выбора максимальной модели памяти в качестве стандартной позволяет сэкономить время доступа: только к массиву аобращение будет осуществляться по адресу типа huge, а все остальные данные будут размещаться в стандартном сегменте. Для обращения к массиву аможет быть использован указатель раиз примера 6. Все арифметические операции над указателем ра(например, ра++) будут выполняться над всеми 32 его битами.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования Си для персонального компьютера»

Представляем Вашему вниманию похожие книги на «Язык программирования Си для персонального компьютера» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования Си для персонального компьютера»

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

x