Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Assembler в Delphi, пара Segment/Offset 
V
    Опции темы
emike
Дата 14.10.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.5.2008

Репутация: нет
Всего: нет



   Здравствуйте,

 возникла необходимость перевести драйвера для платы захвата видеокадра, написанные на Turbo Pascal, в Delphi. Часть исходного кода написана на assembler'e. Delphi не поддерживает пару Segment/Offset (Error: Segment/Offset pairs doesn't supported in Borland 32-bit Pascal), а также не поддерживает паскалевские функции Seg/Ofs.

 Можно ли как-то решить/обойти эту проблему?

 Вот часть кода:

Код

Procedure Open_FgBuffer64;
   Var
     p:       pointer;
     sb,ob:   word;
   Begin
     If MaxAvail>110608 then
        Begin
          GetMem(p,55296);
          sb:=Seg(p^);
          ob:=Ofs(p^);
          GetMem(p,55312);
          If ob<>0 then
            Begin
              sb:=sb+1;
              ob:=0;
            end;
          FgBuffer64:=Ptr(sb,ob);  // Здесь возникает ошибка
        end
       else FgError:=4;
   End;


   Заранее спасибо.
PM MAIL   Вверх
Alexeis
Дата 14.10.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Прочитайте про модель памяти в винде. В защищённом режиме указатель это просто двойное слово, потому с ним можно работать безо всяких разделений и соответственно объединять ничего не нада. Сегмент теперь 4Гб smile . 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
emike
Дата 16.10.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.5.2008

Репутация: нет
Всего: нет



Хорошо, с этим я разобрался.

Возникла еще одна проблема определения видеорежима.

Код

    mov  AX,4F03h
    int  10h
    mov  AX, BX


Delphi ругается на функцию int 10h. Не подскажешь что здесь можно сделать?
PM MAIL   Вверх
Alexeis
Дата 16.10.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Опять ограничения защищённого режима. Прерывания, насколько я помню доступны только в драйвере.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Virtuals
Дата 16.10.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 3
Всего: 11



emikeчую следующие вопросы
. а почему енто я не могу прочитать память видеокарты? smile (вся память в защищенном режиме ВИРТУАЛЬНА! и никакой связи между адресом, и физическим расположением нет!, а адресное пространство видеокарты это вообще не мамять а буфер ввода вывода, отраженный на адресное пространство) и туда вам путь заказан, ну разве только из ring0, и то не факт что безболезнено...
способы чтения данных из видеопамяти в реальном режиме (16бит нормал моде) абсолютно неприменимы в защищенном 32битном режиме smile 

ЗЫ забудьте этот пример как страшный сон, он применим только для реального режима (для НТ платформы это от включения компа до середины загрузки ntldr) smile 
PM MAIL ICQ   Вверх
emike
Дата 18.10.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.5.2008

Репутация: нет
Всего: нет



Понятно, спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0724 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.