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

Тут можно читать онлайн C. Бочков - Язык программирования Си для персонального компьютера - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство СП Диалог, Радио и связь, год 1990. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования Си для персонального компьютера
  • Автор:
  • Жанр:
  • Издательство:
    СП Диалог, Радио и связь
  • Год:
    1990
  • ISBN:
    5-256-00974-5
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Язык программирования Си для персонального компьютера - описание и краткое содержание, автор C. Бочков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

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

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

Интервал:

Закладка:

Сделать

Функции типа pascalне могут иметь переменное число аргументов, как, например, функция printf. Поэтому нельзя использовать завершающее многоточие в списке параметров функции типа pascal.

Пример: см. пример 4 в разделе 3.3.3.4.

Модификаторcdecl

Существует опция компиляции, которая присваивает всем функциям и указателям на функции тип pascal. Это значит, что они будут использовать вызывающую последовательность, принятую в языке Паскаль, а их идентификаторы будут приемлемы для вызова из программы на Паскале. При этом можно указать, что некоторые функции и указатели на функции используют вызывающую последовательность, принятую в языке Си, а их идентификаторы имеют традиционный вид для идентификаторов языка Си. Для этого их объявления должны содержать модификатор cdecl.

Примечание. Все функции в стандартных включаемых файлах (например, stdio.h) объявлены с модификатором cdecl. Это позволяет использовать библиотеки стандартных функций даже в тех программах, которые компилируются с упомянутой выше опцией компиляции.

Примечание. Главная функция программы ( main) должна быть всегда объявлена с модификатором cdecl, поскольку модуль поддержки выполнения передает ей управление, используя вызывающую последовательность языка Си.

Пример: см. пример 3 в разделе 3.3.3.4.

Модификаторы near, far, huge

Эти модификаторы оказывают воздействие на работу с адресами объектов.

Компилятор языка Си позволяет использовать при компиляции одну из нескольких моделей памяти. Виды моделей памяти и методы их применения рассмотрены в разделе 8 "Модели памяти".

Модель, которую вы используете, определяет размещение в оперативной памяти вашей программы и данных, а также внутренний формат указателей. Однако при использовании какой-либо модели памяти можно объявить указатель с форматом, отличным от действующего по умолчанию. Это делается с помощью модификаторов near, farи huge.

Указатель типа near— 16-битовый; для определения адреса объекта он использует смещение относительно текущего содержимого сегментного регистра. Для указателя типа nearдоступная память ограничена размером текущего 64-килобайтного сегмента данных.

Указатель типа far— 32-битовый; он содержит как адрес сегмента, так и смещение. При использовании указателей типа farдопустимы обращения к памяти в пределах 1-мегабайтного адресного пространства процессора Intel 8086/8088, однако значение указателя типа farциклически изменяется в пределах одного 64-килобайтного сегмента.

Указатель типа huge— 32-битовый; он также содержит адрес сегмента и смещение. Значение указателя типа hugeможет быть изменено в пределах всего 1-мегабайтного адресного пространства. В СП ТС указатель типа huge всегда хранится в нормализованном формате. Это имеет следующие следствия:

—операции отношения ==, !=, <, >, <=, >= выполняются корректно и предсказуемо над указателями типа huge, но не над указателями типа far;

—при использовании указателей типа hugeтребуется дополнительное время, т. к. программы нормализации должны вызываться при выполнении любой арифметической операции над этими указателями. Объем кода программы также возрастает.

В СП MSC модификатор hugeприменяется только к массивам, размер которых превышает 64 К. В СП ТС недопустимы массивы больше 64 К, а модификатор hugeприменяется к функциям и указателям для спецификации того, что адрес функции или указуемого объекта имеет тип huge.

Для вызова функции типа nearиспользуются машинные инструкции ближнего вызова, для типов farи huge— дальнего.

Примеры.

/* пример 1 */

int huge database [65000];

/* пример 2 */

char fаг *x;

/* пример 3 */

double near cdecl calc(double, double);

double cdecl near calc(double, double);

/* пример 4 */

char far pascal initlist[INITSIZE];

char far nextchar, far *prevchar, far *currentchar;

В первом примере объявляется массив с именем database, содержащий 65000 элементов типа int. Поскольку размер массива превышает 64 Кбайта, его описатель должен быть модифицирован специальным ключевым словом huge.

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

char *(far *х);

В примере 3 показано два эквивалентных объявления. В них объявляется calcкак функция с модификаторами near и cdecl.

В примере 4 также представлены два объявления. Первое объявляет массив типа charс именем initiistи модификаторами farи pascal. Модификатор pascalуказывает на то, что имя данного массива используется не только в программе на языке Си, но и в программе на языке Паскаль (или другом языке программирования с подобными правилами написания имен внешних переменных). Модификатор farуказывает на то, что для доступа к элементам массива долины использоваться 32-битовые адреса.

Второе объявление объявляет три указателя на farзначения типа charс именами nextchar, prevcharи currentchar. Эти указатели могут быть, в частности, использованы для хранения адресов элементов массива initlist. Обратите внимание на то, что специальное ключевое слово farдолжно быть повторено перед каждым описателем.

Модификатор interrupt

Модификатор interruptпредназначен для объявления функций, работающих с векторами прерываний процессора 8086/8088. Для функции типа interruptпри компиляции генерируется дополнительный код в точке входа и выхода из функции, для сохранения и восстановления регистров микропроцессора АХ, ВХ, СХ, DX, SI, DI, ES и DS. Остальные регистры — ВР, SP, SS, CS и IP сохраняются всегда как часть вызывающей последовательности языка Си или часть самой системы обработки прерывания.

См. пример в разделе 3.3.3.1.

Функции прерываний следует объявлять с типом возвращаемого значения void.

Функции прерываний поддерживаются для всех моделей памяти. В СП MSC, в малой и средней модели в регистр DS заносится при входе в функцию адрес сегмента данных всей программы, а в компактной, большой и максимальной модели в регистр DS заносится адрес сегмента данных программного модуля. В СП ТС только в максимальной модели в регистр DS заносится адрес сегмента данных программного модуля, а в остальных моделях—адрес сегмента данных всей программы.

Модификатор interruptне может использоваться совместно с модификаторами near, far, huge.

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

Интервал:

Закладка:

Сделать


C. Бочков читать все книги автора по порядку

C. Бочков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x