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/