Нужен компиллер C генерирующий код под чистый 386 проц, ОС-незвисимый

Тема в разделе "WASM.NT.KERNEL", создана пользователем alexey_k, 26 мар 2008.

  1. alexey_k

    alexey_k New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    24
    Сабж.

    Нужно написать бут-менеджер, который грузится после BIOS и загрузочного сектора, т.е. юзающий только прерывания BIOS (никакого доса)...
    Есть-ли такие компили в природе (конечно, при условии, что я не буду юзать стд. билблу)?

    видел исходники проги на WATCOM C:

    Код (Text):
    1. #include <i86.h>
    2. #include <mem.h>
    3. #include <bios.h>
    4. ...
    вот интересно, привязывает-ли он рождаемый файл к ОСи (к ДОС, напир.) или нет..?

    Зарание спасибо!
     
  2. SWR

    SWR New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    226
    Адрес:
    Russia
    ну 386. может работать в разных режимах.
    Если бут то скорее реальный режим. то подойдет любей компиль под дос.
    точнее сom файл
     
  3. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    --deleted--
     
  4. alexey_k

    alexey_k New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    24
    Все! трабла решена!

    Юзаем Borland C++ 3.1

    принцип следующий:
    1) пишем код на C, без использования стандартных либ.
    2) если нужно. пишем дополнительные либы для работы с BIOS (средствами встроенного ассемблера)
    3) сначала протсто компилируем нужные файлы в OBJ.
    4) затем линкуем их (только их, без RTL), указывая, формат файла - COM.
    5) на выходе получаем очень компактный код, который юзает только BIOS (если мы это организовали в п.2 ;))

    ЗЫ
    Сейчас пишу прототипы ф-ий биоса (т.к. в борландовском RTL всё слишком заморочено и не очень эффективно ;))

    Тему можно закрыть!
    Всем спасибо!
     
  5. qeos

    qeos New Member

    Публикаций:
    0
    Регистрация:
    18 май 2008
    Сообщения:
    2
    А есть ли похожее решение для Pascal?
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    qeos
    Если под 16 битный режим то Borland Pascal.
    Если под 32 битный режим
    Можно берешь Free Pascal и компилируешь.
    Можно еще Delphi заставить работать.
     
  7. qeos

    qeos New Member

    Публикаций:
    0
    Регистрация:
    18 май 2008
    Сообщения:
    2
    а можно по пунктам в бинарник? или сом..
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    вызываем fpc kernel.pas
    Остальные параметры по вкусу.
    На выходе имеем. Собственно что хотим то и имеем. Ассемблерный код exe или объектный файл.
    Пусть объектный файл
    Далее линкуем через ld такойже что и в GNU C.
    Незнаю как насчет последних версий те которые были имели ограничения на формат ELF и PE.
    Хотя в линуксе таких ограничений нету(покрайней мери в том что идет вместе с GNU C).
    А их не состовляет пересобрать в бинарник. Либы ручками либы objdump.exe

    Тут за одно можешь глянуть
    http://www.osdev.org/wiki/Pascal
     
  9. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    alexey_k, ты извращенец. Borland C++ 3.1 уже пора на помойку истории выкидывать. Используй лучше Watcom или GCC. Линкеру только передаётся опция, отключающая дефолтовые runtime-библиотеки.
     
  10. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Да по большому счёту даже Visual C++ будет компилить чистый код - компиль obj файлы, а потом линкуй как тебе угодно в любой формат. Аналогично с реальным режимом. Borland лучше не использовать из-за его отвратительного кода.
     
  11. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ну-ну, и какой это у тебя Visual C++ умеет 16-битный код генерировать?
    Да нормальный у него код, в 16-битном режиме от Watcom не сильно отличается.
    Хотя для таких вещей Watcom всё-таки удобней.
    Кто-нибудь из тех кому не нравится кодогенерация BC 3.1 может пример привести?
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cppasm
    какой это у тебя Visual C++ умеет 16-битный код генерировать
    Например, "Microsoft (R) C/C++ Optimizing Compiler Version 8.00c" тот который в составе "msvc v1.5" ~1993год.

    кому не нравится кодогенерация BC 3.1 может пример привести?
    И в результате выяснится, что проблема в незнании ключиков компилятора.
     
  13. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Не хочу показаться занудой, но это не Visual C++, это MSC.
     
  14. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    censored
    readme.txt:
    Код (Text):
    1.                                README.TXT File
    2.              README file for Microsoft(R) Visual C++, Version 1.5
    3.                   (C) Copyright Microsoft Corporation, 1993
    4.  
    5. This document decribes the release notes for version 1.5 of Microsoft
    6. Visual C++.
    7.  
    8. The majority of the release notes for Visual C++ are in Windows Write format.
    9. You can view these files using the Technote Viewer. There are four files
    10. containing release information.
    11.  
    12. README.WRI
    13. Contains release notes and important information about Visual C++.
    14.  
    15. ERRATA.WRI
    16. Lists errors in the documentation. Some information is duplicated in the
    17. README.WRI and ERRATA.WRI files.
    18.  
    19. CONFIG.WRI
    20. Contains information that may be needed to configure Visual C++ to work
    21. properly on some systems.
    22.  
    23. TIPS.WRI
    24. Contains additional information to help you use Visual C++ more effectively.
    25.  
    26. PROBRPT.WRI
    27. Template for reporting problems with Visual C++. To report a problem, print this
    28. form, fill in the relevant information, and mail or fax it to Microsoft.
    29.  
    30. README.HLP
    31. Used by the Technote Viewer.
    32.  
    33.      NOTE: Microsoft improves its Visual C++ documentation at the time of
    34.      reprinting, so some of the information in this file may already be
    35.      included in your manuals.
     
  15. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    А разве кто-то говорил про 16х код? Даже если и бут менеджер - это ещё не означает что он целиком будет исполняться в 16 разрядном реальном режиме. Достаточно написать инициализирующую часть на ассемблере (на на чём другом её написать и не получится: нужно засунуть в один сектор) которая будет переводить проц в 32х защищённый режим, а всё остальное пиши на чём угодно.
     
  16. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    По-моему писать загрузочный манагер с переходом в защищённый режим - это по меньшей мере забавно. Можно ещё и точкасеть библиотеки в нём реализовать до кучи. :derisive:
    Борланд Ц 3.1 генерит более качественный код, чем последующие её версии - проверял сам. Про другие компиляторы не знаю...
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    И зачем тебе Protected Mode в бут менеджере?
    Чтобы вывести менюшку на экран и подождать пока пользователь выберет с какого диска грузиться?
    А потом с довольным выражением лица (мы ведь в PM перешли!!) вернуться назад в RealMode, потому что загрузчики всех ОС расчитаны на запуск именно из реального режима.
    Ну он то однозначно не лучше будет чем BC 3.1
     
  18. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Но ведь Grab зачем-то переходит?
     
  19. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cppasm
    Ну он то однозначно не лучше будет чем BC 3.1
    Перефразируя тебя из #11.
    Риторический вопрос: "Кто-нибудь из тех кому не нравится кодогенерация msvc v1.5 может пример привести?"
     
  20. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    А я не говорил что мне его кодогенерация не нравится, я сказал что BC 3.1 будет не хуже :)
    Т.е. если человек уже разобрался и сделал всё под BC 3.1, то переделывать под MSVC 1.5 смысла нет.