OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 27 Апрель, 2024 23:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: 64-х разрядные DLL из BlackBox
СообщениеДобавлено: Среда, 02 Август, 2006 22:22 

Зарегистрирован: Понедельник, 31 Июль, 2006 22:16
Сообщения: 8
Подскажите какие необходимо внести исправления в линкер и(или) копилятор BlackBox для генерации 64-х разрядных WinApi приложений. Может кто нибудь это сделал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 64-х разрядные DLL из BlackBox
СообщениеДобавлено: Пятница, 04 Август, 2006 08:23 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
MT писал(а):
Подскажите какие необходимо внести исправления в линкер и(или) копилятор BlackBox для генерации 64-х разрядных WinApi приложений. Может кто нибудь это сделал?
Исправлять не надо. Добавлять только. Такое пожелание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 04 Август, 2006 15:52 

Зарегистрирован: Понедельник, 31 Июль, 2006 22:16
Сообщения: 8
Добавлю, только не знаю что. Раскажите подробнее


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 04 Август, 2006 23:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ситуация такова - с одной стороны, надо править компилятор, с другой - адаптировать рантайм.

1) По компилятору. В ББ использован модифицированный под Компонентный Паскаль компилятор Оберона-2 OP2 (Oberon Portable Compiler). Этот компилятор написан специально с расчетом на легкую портируемость. Однопроходной компилятор с прямой кодогенерацией из синтаксического дерева. Для портируемости разбит на две части - front-end и back-end, от первого ко второму передается синтаксическое дерево.
Описание OP2 доступно здесь:
ftp://ftp.inf.ethz.ch/pub/software/Ober ... 2.Paper.ps
(если нужно, могу выложить в PDF).
В BlackBox принято то же именование модулей, но с префиксом подсистемы Dev.
Итого: в компиляторе ББ переписать придется 3 модуля - DevCPV486, DevCPL486, DevCPC486.

2) По рантайму - естественно, потребуется внести изменения в ядро Kernel и сборщик мусора. На поверхностный взгляд этого хватит, хотя наверняка потребуется дорабатывать и что-то еще.

Отдельно - потребуется решить вопрос, как быть с базовыми типами.
Трогать их крайне нежелательно, они зафиксированы в стандарте языка и сделаны совместимыми с Java. Видимо, нужно оставить за основной LONGINT и добавить HUGEINT для 128-бит арифметики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 05 Август, 2006 11:39 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Мне бы Вашу уверенность. Попробуйте сначала разобраться в форматe PE64 DLL. А потом добавить разбор дополнительных ключей в линкере. Типа pe32 и pe64.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 05 Август, 2006 12:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, про линковщик забыл!

DevLinker тоже придется править. Однако это отнюдь не самое сложное по сравнению с кодогенерацией и рантаймом. В рантайме сложности связаны с переходом на 64-бит указатели.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 05 Август, 2006 13:00 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Уточнить детали формата PE64 можно по исходникам FASM http://flatassembler.net/fasmw167.zip


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 05 Август, 2006 17:06 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Цитата:
В рантайме сложности связаны с переходом на 64-бит указатели.
Кто-нибудь уже пытался?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 05 Август, 2006 22:06 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Не знаю по поводу попыток...

Вообще говоря, сложностей-то как таковых с переходом на указатели нет. Но есть много рутины, требующей внимательной правки кода ядра и, видимо, не только ядра.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 07 Август, 2006 21:08 

Зарегистрирован: Понедельник, 31 Июль, 2006 22:16
Сообщения: 8
Спасибо большое за ответы. Буду разбираться. Мне требуется генерация чистых 64-разрядных WinApi, kernel в части отвечающий за выделение памяти я давно написал под себя (требовалась многозадачность и отказался от сборки мусора). Что касается перехода на 64-х разрядную адресацию - кажется не сложно добавить новый тип PTR64 (может я ошибаюсь). Сложнее с форматом PE64 - хотя пишут что он не отличается по структуре от PE32.

Илья, если не сложно дайте ссылку на описание O2 в pdf формате.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 08 Август, 2006 20:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вот, пожалуйста:

= Ссылка устарела =


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 09 Август, 2006 15:47 

Зарегистрирован: Понедельник, 31 Июль, 2006 22:16
Сообщения: 8
Спасибо, скачал


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB