From relcom Tue Dec 24 13:34:13 1996
From: "Victor B. Wagner" <vitus@agropc.msk.su>
Newsgroups: relcom.comp.lang.pascal
Subject: Re: DPMI vs. BP 7.0
Date: 24 Dec 1996 11:10:01 +0300
Andrew (2:5020/853.4) wrote:
[skipped]
Ну, во первых, почему DPMI versus BP 7.0 - versus это все-таки
значит "против", а DPMI - очень полезная feature
>Hаpод а кто-нибудь писал под сабжем,а то есть некотоpые вопpосы:
>
> 1)ЧТО,DPMI пpогpамму нельзя отладить???? :(((
Используйте TDX. Вообще, зачастую и REAL программы имеет смысл
отлаживиать не в среде, а в TD286 (TD386 я не использовал,
поскольку у меня стоял QEMM в Stealth режиме), поскольку
для серьезной отладки такие feature как просмотр регистров сопроцессора
и вызов процедур из окошка Evaluate, равно как и просмотр
ассемблерного кода, в который скомпилилась программа,
весьма полезны.
TDX заодно и DLL позволяет отлаживать, если они в программе используются.
> 2)Как использовать динамическую память >64k,т.е.
>GlobalAllocate я сделал а вот как к ней обpащаться по индексу!? :((((
Видимо так:
Function HugeIndex(Base:Pointer;Index:longint):Pointer;
{Получает: указатель на блок >64K и смещение в байтах.
Возвращает: указатель на нужный байт в блоке}
Type TT:record
Offset:Word
High:Word;
end;
var L:Longint;
PT:TT absolute Base;
IT:TT absolute L;
begin
L:=Index+PT.Offset;
HugeIndex:=Ptr(PT.High+IT.High*SelectorInc,L.Offset);
end;
Примечания:
1.Переменную L я завел для перестраховки. Указатель, полученный
с помощью GlobalAllocPtr всегда имеет Offset=0.
2. На слове SelectorInc рекомендую нажать CtrlF1.
3. Никогда не путайте Handle возвращаемый GlobalAlloc с указателем,
и, тем более со значением, допустимым для загрузки в сегмегтные регистры.
>Ответь мне о всезнающий All!Очень пpошу!
>PS Мож кто что почитать посоветует
Что же касается литературы, то, поскольку уже полгода я серьезно
на Pascal не пишу, то она вся куда-то разбежалась и корректных ссылок
привести не могу. А выходила очень хорошая книжка, посвящаенная
как раз работе в DPMI.
Хотя, впрочем родная документация содержит вполне достаточно информации.
Очень рекомендую внимательно проработать Language Guide.
Для серьезной работы в Protected очень полезен пакет Borland Open Access Pack,
или, хотя бы модуль DPMI оттуда.
Кстати, его исходные тексты весьма поучительны.
Пример работы с большими кусками памяти есть в модуле Huge Collection,
который валяется много по каким ftp и mail серверам. На garbo.uwasa.fi
он есть точно.
Еще полезно почитать собственно RTL - исходные тексты модулей DOS и System,
а также Turbo Professional 5.20 и выше, которая поддерживает DPMI.
Впрочем Professional годится не только для чтения, но и для использования.
---------------------------------------------------------------------------
Phone: 7(095)230-80-61 Victor B. Wagner
Fax: 7(095)230-80-42 Dokuchaev Soil Institute
EMail: vitus@agropc.msk.su Pyzhevsky lane, 7
Moscow,109017 Russia
|