OberonCore https://forum.oberoncore.ru/ |
|
64-х разрядные DLL из BlackBox https://forum.oberoncore.ru/viewtopic.php?f=1&t=286 |
Страница 1 из 1 |
Автор: | MT [ Среда, 02 Август, 2006 22:22 ] |
Заголовок сообщения: | 64-х разрядные DLL из BlackBox |
Подскажите какие необходимо внести исправления в линкер и(или) копилятор BlackBox для генерации 64-х разрядных WinApi приложений. Может кто нибудь это сделал? |
Автор: | Сергей Оборотов [ Пятница, 04 Август, 2006 08:23 ] |
Заголовок сообщения: | Re: 64-х разрядные DLL из BlackBox |
MT писал(а): Подскажите какие необходимо внести исправления в линкер и(или) копилятор BlackBox для генерации 64-х разрядных WinApi приложений. Может кто нибудь это сделал? Исправлять не надо. Добавлять только. Такое пожелание.
|
Автор: | MT [ Пятница, 04 Август, 2006 15:52 ] |
Заголовок сообщения: | |
Добавлю, только не знаю что. Раскажите подробнее |
Автор: | Илья Ермаков [ Пятница, 04 Август, 2006 23:36 ] |
Заголовок сообщения: | |
Ситуация такова - с одной стороны, надо править компилятор, с другой - адаптировать рантайм. 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 ] |
Заголовок сообщения: | |
Мне бы Вашу уверенность. Попробуйте сначала разобраться в форматe PE64 DLL. А потом добавить разбор дополнительных ключей в линкере. Типа pe32 и pe64. |
Автор: | Илья Ермаков [ Суббота, 05 Август, 2006 12:14 ] |
Заголовок сообщения: | |
Да, про линковщик забыл! DevLinker тоже придется править. Однако это отнюдь не самое сложное по сравнению с кодогенерацией и рантаймом. В рантайме сложности связаны с переходом на 64-бит указатели. |
Автор: | Сергей Оборотов [ Суббота, 05 Август, 2006 13:00 ] |
Заголовок сообщения: | |
Уточнить детали формата PE64 можно по исходникам FASM http://flatassembler.net/fasmw167.zip |
Автор: | Сергей Оборотов [ Суббота, 05 Август, 2006 17:06 ] |
Заголовок сообщения: | |
Цитата: В рантайме сложности связаны с переходом на 64-бит указатели. Кто-нибудь уже пытался?
|
Автор: | Илья Ермаков [ Суббота, 05 Август, 2006 22:06 ] |
Заголовок сообщения: | |
Не знаю по поводу попыток... Вообще говоря, сложностей-то как таковых с переходом на указатели нет. Но есть много рутины, требующей внимательной правки кода ядра и, видимо, не только ядра. |
Автор: | MT [ Понедельник, 07 Август, 2006 21:08 ] |
Заголовок сообщения: | |
Спасибо большое за ответы. Буду разбираться. Мне требуется генерация чистых 64-разрядных WinApi, kernel в части отвечающий за выделение памяти я давно написал под себя (требовалась многозадачность и отказался от сборки мусора). Что касается перехода на 64-х разрядную адресацию - кажется не сложно добавить новый тип PTR64 (может я ошибаюсь). Сложнее с форматом PE64 - хотя пишут что он не отличается по структуре от PE32. Илья, если не сложно дайте ссылку на описание O2 в pdf формате. |
Автор: | Илья Ермаков [ Вторник, 08 Август, 2006 20:47 ] |
Заголовок сообщения: | |
Вот, пожалуйста: = Ссылка устарела = |
Автор: | MT [ Среда, 09 Август, 2006 15:47 ] |
Заголовок сообщения: | |
Спасибо, скачал |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |