OSDev http://osdev.su/ |
|
Выбор инструментов для создания ОС http://osdev.su/viewtopic.php?f=6&t=402 |
Страница 2 из 3 |
Автор: | Himik [ 12 мар 2011, 16:31 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
Большое значение имеет тип предполагаемых экзешников - PE или ELF. Если Windows-совместимый PE, то любые компиляторы от MS или любые "под Windows", а если Unix-совместимый ELF, то нужны компиляторы от GNU (под Windows они тоже есть). |
Автор: | ghost1st [ 12 мар 2011, 21:51 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
SII писал(а): А делать надо не бинарники, а объектники, что, собственно, компилятор и делает. А дальше уже собирать то, что нужно, причём не обязательно компоновщиком от Студии, можно и другим, понимающим КОФФы. Можно и обычные ЕХЕшники получать, кстати: всё равно адреса загрузки большинства модулей системы становятся точно известны лишь в процессе работы, поскольку карта распределения памяти отнюдь не фиксирована и может меняться от машины к машине, а значит, сие надо выяснять по ходу дела. В общем мне нужно получать чистые бинарники с помощью студии, без ссылок на kernel.dll(это разобрался) и особенно без функций которые к рантайму обращаются!!! Himik писал(а): Большое значение имеет тип предполагаемых экзешников - PE или ELF. Если Windows-совместимый PE, то любые компиляторы от MS или любые "под Windows", а если Unix-совместимый ELF, то нужны компиляторы от GNU (под Windows они тоже есть). Это я знаю - но как написал выше, нужны чистые бинарники - ибо прогать не "под винду" или других ос... У меня есть еще идея, но она схожа с идеей психа) - если писать код в студии и делать вывод асма в файл и потом редактировать и компилить NASM'ом |
Автор: | SII [ 13 мар 2011, 08:44 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
Делать бинарники -- изначально неверный подход, надо получать именно перемещаемые модули, которые будут загружаться и настраиваться на конкретное местоположение самописным загрузчиком. Ну а чтобы не цепляла лишние DLL, достаточно писать так, чтобы к ним не было обращений, ну и написать свой стартовый код (с которого реально начинается выполнение программы и который в конце концов передаёт управление функции main или WinMain). |
Автор: | ghost1st [ 13 мар 2011, 16:01 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
SII писал(а): Делать бинарники -- изначально неверный подход, надо получать именно перемещаемые модули, которые будут загружаться и настраиваться на конкретное местоположение самописным загрузчиком. Я это знаю... Мне нужен чистый бинарник, который можно писать на Си, например: Код: int func(void){ return 0; } И этот код компилируется в бинарник, в котором только этот код и ничего лишнего, как быть??? Такое существует вообще??? SII писал(а): ... Ну а чтобы не цепляла лишние DLL, достаточно писать так, чтобы к ним не было обращений, ну и написать свой стартовый код (с которого реально начинается выполнение программы и который в конце концов передаёт управление функции main или WinMain). Если не сложно, можешь пример показать??? Я может плохо пытаюсь, но CRT (Common Run-Time) все равно цепляется!!! Пишет неразрешенный внешний символ __CRTMainStartup() (вроде так называется)!!! ЗЫ: Мне не нужна ни винда, ни linux'ы, и ничего другого... |
Автор: | SII [ 13 мар 2011, 23:58 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
Я не использую Си, поэтому подробностей не знаю. Но точно знаю, что _ничего_ сложного в подмене стартового кода нет, достаточно уметь пользоваться компилятором командной строки и получать с его помощью _объектный_, а не исполняемый файл, а затем уже компоновщиком ("линкером" на жаргоне) связывать его с написанным на ассемблере стартовым модулем собственного производства (а не стандартным). Совсем без ассемблера обойтись здесь невозможно. Можно ли сей процесс автоматизировать в Студии (чтобы не прибегать к помощи командной строки), я не знаю, однако в инструментах, предназначенных для программирования микроконтроллеров, можно, в Дельфях -- тоже, так что, наверное, и со Студией тоже всё получится, но сначала надо научиться делать это из командной строки. Умеет ли компоновщик Студии выдавать бинарники, я тоже не знаю, но, как уже говорил, на практике они и не нужны, лучше сразу привыкать иметь дело с перемещаемыми файлами (ПЕ-КОФФ в случае Студии) и написать для них свой загрузчик. |
Автор: | Himik [ 14 мар 2011, 01:11 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
Нашёл пример здесь: http://board.sysbin.com/viewtopic.php?t ... &start=105 В общем, главное указать линковщику имя входной функции /ENTRY:main test.cpp: Код: int main () { for (;;); return 0; } build.cmd (из командной строки): @echo off rem Set environment call vcvars32.bat cl test.cpp /c /nologo /GS- /GR- /Ox /TP /Gm /Zi if %ERRORLEVEL% NEQ 0 exit link test.obj /ENTRY:main /RELEASE /OUT:"test.bin" /SUBSYSTEM:NATIVE /NODEFAULTLIB /MACHINE:X86 /BASE:0x0 /MERGE:.text=.data /MERGE:.rdata=.data /IGNORE:4254 objcopy test.bin new.bin -I pe-i386 -O binary |
Автор: | ghost1st [ 15 мар 2011, 00:34 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
Всем спасибо!!! Разобрался наконец-то!!! |
Автор: | JSON [ 04 май 2011, 19:27 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
1. YASM, NASM 2. VisualStudio 3. QEMU 4. WinHEX 5. IDA Pro |
Автор: | diger [ 12 май 2011, 17:29 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
1) FASM 2) TinyCC 3) QEMU 4) JEEX 5) BIEW... в редких случаях IDA |
Автор: | 418ImATeapot [ 25 май 2011, 13:23 ] |
Заголовок сообщения: | Re: Выбор инструментов для создания ОС |
FASM+TinyCC(маленький, быстрый, бесплатный)+Binlink(генерирует плоские файлы из COFF, говорят есть проблемы, но есть его продолжение Coffe, которое висит здесь, на форуме)+Objconv(конвертер ELF/COFF,TinyCC плохо работает с COFFами, или это я глупый+дизассемблер объектных файлов(вот это уже полезнее))+HDasm(Для меня главный критерий - маленький! Можно найти на wasm.ru) |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |