Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Управление динамически распределяемой памятью

Администратор динамически распределяемой области памяти

Borland Pascal защищенного режима довольно существенно отличается

от администратора динамически распределяемой памяти Borland

Pascal реального режима. В частности, переменные HeapOrg,

HeapEnd, HeapPtr и FreeList в версии модуля System для защищенно-

го режима не определены. Администратор этапа выполнения динами-

чески распределяемой области памяти Borland Pascal защищенного

режима (который идентичен администратору этапа выполнения динами-

чески распределяемой области памяти Borland Pascal для Windows)

для выполнения основных операций по выделению и освобождению па-

мяти использует администратор этапа выполнения, а для оптимизации

распределения небольших блоков памяти включает в себя подсистему

вторичного распределения сегмента. Подробнее об администраторе

динамически распределяемой области памяти этапа выполнения расс-

казывается в Главе 21.

Предопределенные селекторы

В модуле System для обычно используемых адресов реального

режима предусмотрено несколько предопределенных селекторов. Они

именуются по физическому сегменту, которому данные селекторы

присвоены, и используются для совместимости между реальным и за-

щищенным режимом DOS.

Предопределенные селекторы Таблица 17.1

-------------------T--------------------------------------------

¦ Селектор ¦ Описание ¦

+------------------+--------------------------------------------+

¦ Seg0040 ¦ Используется для доступа к области данных¦

¦ ¦ BIOS $40 в младших адресах. ¦

+------------------+--------------------------------------------+

¦ SegA000 ¦ Используется для доступа к графической па-¦

¦ ¦ мяти EGA и VGA по адресу сегмента $A000. ¦

+------------------+--------------------------------------------+

¦ SegB000 ¦ Используется для доступа к видеопамяти мо-¦

¦ ¦ нохромного адаптера по адресу сегмента¦

¦ ¦ $A000. ¦

+------------------+--------------------------------------------+

¦ SegB800 ¦ Используется для доступа к видеопамяти¦

¦ ¦ цветного графического адаптера по адресу¦

¦ ¦ сегмента $A000. ¦

L------------------+---------------------------------------------

В реальном режиме переменные SegXXXX всегда содержат значе-

ния $0040, $A000, $B000 и $B800 соответственно. В защищенном ре-

жиме код запуска библиотеки исполняющей системы создает четыре

селектора, ссылающихся на конкретные области памяти реального ре-

жима. При ссылке на эти области памяти вам следует использовать

переменные SegXXXX. Например, если у вас был код следующего вида:

CtrMode := Mem[$40: $49];

то вместо него следует записать:

CtrMode := Mem[Seg0040: $49];

Используя переменные SegXXXX, вы можете гарантировать, что

ваша программа без изменений будет работать в реальном и защищен-

ном режимах.

Соседние файлы в предмете Программирование на Pascal