необходимо для приведения операндов к вещественному типу; если этого не сделать, возникнет переполнение значения типа Word и будет напечатан неверный результат).
Расширитель ДОС для каждого загружаемого сегмента кода, который, как известно, не может изменяться, создает селектор—псевдоним, ссылающийся на тот же сегмент кода, но определенный как сегмент данных. Селектор—псевдоним располагается в таблице дескрипторов сразу за селектором кода, поэтому получить к нему доступ можно с помощью той же переменной Selectorlnc. Это открывает возможность создания самоизменяющихся программ. Если, например, требуется изменить 10—и по счету байт в коде процедуры МуРгос, можно использовать такой фрагмент программы:
var
Р: Pointer;
Р := Ptr(Seg(МуРгос)+SelectorInc, Ofs(MyProc));
Byt^GetPtrtPylO)'') := ....
В защищенном режиме программа не может ссылаться на модуль Overlay, использовать директивы {$0 . . . } и переменные OvrXXXX из модуля System, так как расширитель ДОС автоматически реализует все функции администратора оверлея. Для управления свойством выгружае— мости кодовых сегментов в среду ВР введена специальная директива компилятора {$S Flagi Flag]). В качестве параметров Flag в этой директиве должны использоваться следующие идентификаторы:
Идентификатор |
Назначение |
MOVEABLE |
Сегмент может перемещаться в памяти |
FIXED |
Сегмент не может перемещаться |
PRELOAD |
Сегмент загружается в момент старта программы |
DEMANLOAD |
Сегмент загружается только при обращении к нему |
DISCARDABLE |
Сегмент можно удалять из памяти |
PERMANENT |
Сегмент нельзя удалять из памяти |
По умолчанию каждый модуль компилируется с такой директивой:
{$S MOVEABLE DEMANLOAD DISCARDABLE}
Это означает, что соответствующий кодовый сегмент может перемещаться в памяти, загружается только когда ему передается управление и он может удаляться из памяти. При необходимости Вы можете переопределить умалчиваемые свойства, включив директиву $3 в самом начале программы или модуля. Если в директиву вставляются два противоположных по смыслу идентификатора, действует последний из них.
9.4. СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ РЕСУРСОВ
Как уже говорилось, ресурсы — это двоичные данные, создаваемые специальными редакторами ресурсов для нужд программы и пристыко— вываемые в конец исполняемого файла. Сразу же оговорюсь, что ресурсы