Делфи7йские ОБДЖИ и Линкеры

Тема в разделе "WASM.RESEARCH", создана пользователем trash, 12 май 2006.

  1. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    Вот хочу юзать компилер DCC32.EXE v15 чтобы делать на нем всю фигню: SYS & COM файлы (которые могут делаться на D2). Естественно для многих нужд сельцково хозяйства (драйвера и OSи).



    По идее нужен спец линкер (Или конвертор в 'чистый' COFF/OMF), т.к ДЦЦ очень любит вставлять мусор или данные в область кода.



    Вот хочу запариться с подобной рульной тулзой. Но с инфой прямо беда.. Основная трабла с COMDEF'ами(от бордерланд). Никому не попадались какие-нибудь решения или инфа? Помогите!
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Вроде бы это нельзя делать. D2 (?) могла делать бинарики под 16битные приложения, а заставить D6+ это делать, имхо, невозможно.
     
  3. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    trash

    unilink и Delphi 3.0. Альтернативой можно юзать мелкомягкий линкер. Для шестерки, врядли сейчас есть что-то готовое - слишком компилер испортился.
     
  4. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    СОМ-ки можно делать на дельфе!

    Аттачу пример...



    Для прикола при компиляции использовался архи-древнейший турболинкер v3.0 (1990г).



    unilink хоть и переваривает D7, однако отвергает попытки сделать 32-битный комок-бинарник. Видимо автор (пока?) не догоняет что нужны смешивания не только COFF & OMF файлов но и кодовых сегментов.



    Также заценил doswin32 от этого неизвестного корпорейшена. (ссылку нашел на http://www.datarescue.com



    То что FAR'а работает в DOS'е удивило. А вот DCC32.EXE ни фига не пашет...



    Заколдованый какой-то этот компилер...



    [​IMG] 921544291__d2_com.rar
     
  5. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    Насчет невозможности делать че-то такое на дельфе7.

    Вот комовая прога:



    unit hello; interface

    procedure Main;cdecl;

    implementation

    procedure int21_print (_ax:word;_dx:pchar);

    asm Int $21 end;

    procedure Main;cdecl;

    begin

    int21_print ($900,'Hello World!$');

    end;

    end.





    Забавно... Ни один линкер не переваривает обджи Дэ севен, а вот TLINK'у (древнему) оно пофиг, но на сложных файлах он уже глючит :dntknw:







    [​IMG] _1123355695__hello.rar
     
  6. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    Такая еще просьба Господа. В аттаче hello.rar obj-файл hello.obj (by Delphi7)..



    если не затруднит проверить 'хавает' ли его MS Inkremental Linker каких-нить последних версий.



    Поскольку Version 7.00.9466

    посылает все с той-же мессагой:





    hello.obj : fatal error LNK1123: failure during conversion to COFF: file invalid

    or corrupt





    Так-же 'посылаються' и TASM32 файлы если содержут segment virtual :





    .386P

    _TEXT segment dword public 'CODE' use32

    assume CS:_TEXT



    v_proc segment virtual

    procedure proc

    retn

    endp

    v_proc ends



    start:



    call procedure

    ends





    end start





    А так в общем-то ерундень - разобраться с COMDEF'ами и FIXUP'ами... Хотя как говорят авторы ULINK'а и DOSWIN32 - 'ох и глючен-же этот борланд'...
     
  7. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    Нашел линковщик OPTLINK (2001г) (LINK.EXE) из пакета Digital Mars C++. В общем довольно неплохой зверь (заточен под OMF).

    Куча опций, брэндовый (продолжатель Symantec C++). Комки делать может

    (что самое главное). Только вот обджи Delphi7 переваривает так-же

    глючно как и TLINK v3... Переменные не находит... Из-за чего, пришлось

    все убирать в стек, чтобы что-то как-нибудь работало...
     
  8. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    И почему нельзя было зафигачить опцию COM-файлов в DCC32? Кому-то и DOS рулит... Такой же плоский и 32-битный как и виндяра...

    [​IMG] _1157988680__D7_com.rar
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Суффикс dcc32 о чём нибудь говорит? Для win32 делался-то.
     
  10. trash

    trash New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2006
    Сообщения:
    143
    Адрес:
    х.з.
    Да... Глюки поди из-за того что линкеры делают 16-бит прогу (хотя какая разница!).



    В принципе конечно можно юзать PE формат + stub loader...



    Но опять грабли - PE прогу лучше ведь делать $MS-ишным линкером.. С неболшим алигном такие файлы совсем маленькие. Так-что придеться разгребать формат OMF :dntknw: да и бесит что DCC вставляет (ну например константы) в код. Это надо куда-то убирать, в конец где все данные. И подбирать выравнивание...



    Но вообще неясна куча моментов...



    Почему на стековой адресации - томоза??

    Вроде память то одна...



    OPTLINK - ацтой. SYS драйвера NT хоть и билдяться но не пашут.
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Это когда DOS стал 32битным?