Четвертый Borland C++ и его окружение

Программирование со смешанными моделями и модификаторы адресации


Borland C ++ вводит восемь новых ключевых слов, отсутствующих в языке Си стандарта ANSI (near, far, huge, _cs, _ds, _es, _ss и _seg), которые с некоторыми ограничениями и предупреждениями могут использоваться в качестве модификаторов для указателей

(и в некоторых случаях, для функций).

В Borland C++ при помощи ключевых слов near, far или huge вы

можете модифицировать объявления функций и указателей. Указатели

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

при помощи ближних вызовов (near), а выход из них происходит с

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

функции far вызываются дальними вызовами (far) и выполняют дальний (far) возврат. Функции huge похожи на функции far, за исключением того, что функции huge устанавливают регистр DS в новое значение, тогда как функции far не изменяют значения этого регистра.

Существует также четыре специальных ближних (near) указателя

данных: __cs, __ds, __es и __ss. Имеются 16-битовые указатели,

конкретно связанные с соответствующими сегментными регистрами.

Например, если вы объявите указатель следующим образом:

char _ss *p;

то p будет содержать 16-битовое смещение в сегмент стека.

Функции и указатели в данной программе по умолчанию бывают

ближними или дальними, в зависимости от выбранной модели памяти.

Если функция или указатель являются ближними, то они автоматически связываются с регистром CS или DS.

В следующей таблице показано, как это происходит. Отметим,

что размер указателя соответствует предельному размеру памяти,

равному 64К (ближний, в пределах сегмента) или 1 Мб (дальний, содержит собственный адрес сегмента).



Содержание раздела