1 (изменено: Freeman, 02.05.2020 в 23:49)

Тема: Поддержка форматов MENUET0x

Чем родная поддержка MENUET0x отличается от простого перебазирования:

  • Возможно, перебазирование можно/придется делать не на 0, а на размер заголовка MENUET0x.

  • Перед преобразованием секции лучше выровнять на 8 или 16 байт, а не 512, как по умолчанию.

  • Выбор формата MENUET01 или MENUET02 делается автоматически на основе наличия TLS.

Дополнительно подразумевается использование команды -dropsect для удаления лишних секций. Это работает и сейчас.

Прошу подтвердить или опровергнуть, уточнить значения/размерности.

2

Re: Поддержка форматов MENUET0x

Поддержка форматов MENUET зависит от реализации слияния секций. Фактически, запись в файл MENUET есть слияние в одну секцию.

3

Re: Поддержка форматов MENUET0x

Freeman пишет:

запись в файл MENUET есть слияние в одну секцию.

Я потому и предлагал "не ограничиваться именно форматом KolibriOS".
Было бы полезно иметь возможность получить просто Raw Binary.
Ведь исполняемый файл KolibriOS это по сути заголовок MENUET + Raw Binary(одна большая секция).

как-то я линковал с помощью Ваткомовского линкера

на самом деле JWlink — это его форк, но суть та же

JWlink NAME %Name%.kex                  ^
       FORMAT raw bin                   ^
       OPTION offset=0                  ^
       ORDER                            ^
             CLNAME code                ^
             CLNAME data                ^
             CLNAME bss                 ^
       FILE                             ^
            ../../Modules/MENUET01.obj, ^
                            %Name%.obj, ^
                 ../../Modules/DLL.obj, ^
                 ../../Modules/X2C.obj, ^
               ../../Modules/InOut.obj, ^
                 ../../Modules/END.obj

так вот, MENUET01.obj — это и есть заголовок, приляпанный спереди бинарника, потому что линкер изначально не знаком с форматом MENUET.
Вроде ещё OPTLINK-ом можно, там тоже куча разных опций https://digitalmars.com/ctg/ctgLinkSwitches.html

Freeman пишет:

Разбор скриптов, то есть исходников, требует инфраструктуры компилятора

Опции командной строки также требуют разбора

4

Re: Поддержка форматов MENUET0x

0CodErr пишет:

Я потому и предлагал "не ограничиваться именно форматом KolibriOS".

На самом деле планируется добавление ключа -target:

-target menuet
-target kolibri // автовыбор между MENUET0x и StrippedPE, а вдруг?
-target binary  // тоже можно

Про плоский бинарник я писал почти 4 года назад:

Freeman пишет:

Поскольку MENUETxx -- плоский бинарник с заголовком, без заголовка это будет плоский бинарник (да, кэп!), то есть на Delphi формально можно будет написать ядро ОС. "Тулчейн" для Delphi будет включать в себя dcc32 и pet.