Сабж. Нужно написать бут-менеджер, который грузится после BIOS и загрузочного сектора, т.е. юзающий только прерывания BIOS (никакого доса)... Есть-ли такие компили в природе (конечно, при условии, что я не буду юзать стд. билблу)? видел исходники проги на WATCOM C: Код (Text): #include <i86.h> #include <mem.h> #include <bios.h> ... вот интересно, привязывает-ли он рождаемый файл к ОСи (к ДОС, напир.) или нет..? Зарание спасибо!
ну 386. может работать в разных режимах. Если бут то скорее реальный режим. то подойдет любей компиль под дос. точнее сom файл
Все! трабла решена! Юзаем Borland C++ 3.1 принцип следующий: 1) пишем код на C, без использования стандартных либ. 2) если нужно. пишем дополнительные либы для работы с BIOS (средствами встроенного ассемблера) 3) сначала протсто компилируем нужные файлы в OBJ. 4) затем линкуем их (только их, без RTL), указывая, формат файла - COM. 5) на выходе получаем очень компактный код, который юзает только BIOS (если мы это организовали в п.2 ) ЗЫ Сейчас пишу прототипы ф-ий биоса (т.к. в борландовском RTL всё слишком заморочено и не очень эффективно ) Тему можно закрыть! Всем спасибо!
qeos Если под 16 битный режим то Borland Pascal. Если под 32 битный режим Можно берешь Free Pascal и компилируешь. Можно еще Delphi заставить работать.
вызываем fpc kernel.pas Остальные параметры по вкусу. На выходе имеем. Собственно что хотим то и имеем. Ассемблерный код exe или объектный файл. Пусть объектный файл Далее линкуем через ld такойже что и в GNU C. Незнаю как насчет последних версий те которые были имели ограничения на формат ELF и PE. Хотя в линуксе таких ограничений нету(покрайней мери в том что идет вместе с GNU C). А их не состовляет пересобрать в бинарник. Либы ручками либы objdump.exe Тут за одно можешь глянуть http://www.osdev.org/wiki/Pascal
alexey_k, ты извращенец. Borland C++ 3.1 уже пора на помойку истории выкидывать. Используй лучше Watcom или GCC. Линкеру только передаётся опция, отключающая дефолтовые runtime-библиотеки.
Да по большому счёту даже Visual C++ будет компилить чистый код - компиль obj файлы, а потом линкуй как тебе угодно в любой формат. Аналогично с реальным режимом. Borland лучше не использовать из-за его отвратительного кода.
Ну-ну, и какой это у тебя Visual C++ умеет 16-битный код генерировать? Да нормальный у него код, в 16-битном режиме от Watcom не сильно отличается. Хотя для таких вещей Watcom всё-таки удобней. Кто-нибудь из тех кому не нравится кодогенерация BC 3.1 может пример привести?
cppasm какой это у тебя Visual C++ умеет 16-битный код генерировать Например, "Microsoft (R) C/C++ Optimizing Compiler Version 8.00c" тот который в составе "msvc v1.5" ~1993год. кому не нравится кодогенерация BC 3.1 может пример привести? И в результате выяснится, что проблема в незнании ключиков компилятора.
censored readme.txt: Код (Text): README.TXT File README file for Microsoft(R) Visual C++, Version 1.5 (C) Copyright Microsoft Corporation, 1993 This document decribes the release notes for version 1.5 of Microsoft Visual C++. The majority of the release notes for Visual C++ are in Windows Write format. You can view these files using the Technote Viewer. There are four files containing release information. README.WRI Contains release notes and important information about Visual C++. ERRATA.WRI Lists errors in the documentation. Some information is duplicated in the README.WRI and ERRATA.WRI files. CONFIG.WRI Contains information that may be needed to configure Visual C++ to work properly on some systems. TIPS.WRI Contains additional information to help you use Visual C++ more effectively. PROBRPT.WRI Template for reporting problems with Visual C++. To report a problem, print this form, fill in the relevant information, and mail or fax it to Microsoft. README.HLP Used by the Technote Viewer. NOTE: Microsoft improves its Visual C++ documentation at the time of reprinting, so some of the information in this file may already be included in your manuals.
А разве кто-то говорил про 16х код? Даже если и бут менеджер - это ещё не означает что он целиком будет исполняться в 16 разрядном реальном режиме. Достаточно написать инициализирующую часть на ассемблере (на на чём другом её написать и не получится: нужно засунуть в один сектор) которая будет переводить проц в 32х защищённый режим, а всё остальное пиши на чём угодно.
По-моему писать загрузочный манагер с переходом в защищённый режим - это по меньшей мере забавно. Можно ещё и точкасеть библиотеки в нём реализовать до кучи. Борланд Ц 3.1 генерит более качественный код, чем последующие её версии - проверял сам. Про другие компиляторы не знаю...
И зачем тебе Protected Mode в бут менеджере? Чтобы вывести менюшку на экран и подождать пока пользователь выберет с какого диска грузиться? А потом с довольным выражением лица (мы ведь в PM перешли!!) вернуться назад в RealMode, потому что загрузчики всех ОС расчитаны на запуск именно из реального режима. Ну он то однозначно не лучше будет чем BC 3.1
cppasm Ну он то однозначно не лучше будет чем BC 3.1 Перефразируя тебя из #11. Риторический вопрос: "Кто-нибудь из тех кому не нравится кодогенерация msvc v1.5 может пример привести?"
А я не говорил что мне его кодогенерация не нравится, я сказал что BC 3.1 будет не хуже Т.е. если человек уже разобрался и сделал всё под BC 3.1, то переделывать под MSVC 1.5 смысла нет.