У меня есть три вопроса:Компиляция C и сборка ASM в машинный код
- Какой компилятор можно использовать и как я могу использовать его для компиляции C исходного кода в машинный код ?
- Какой ассемблер можно использовать и как его использовать для сборки ASM до машинный код?
- (необязательно). Как вы порекомендовали бы разместить машинный код в правильных адресах (то есть машинный код загрузчика должен быть помещен в загрузочный сектор)?
Моя цель: Я пытаюсь сделать основную операционную систему. Это будет использовать лично сделанный загрузчик и ядро. Я также попытаюсь взять бит и куски из ядра Linux (а именно, драйверы) и интегрировать их в свое ядро. Я надеюсь создать 32-разрядную DOS-подобную операционную систему для обмена информацией с памятью на большинстве современных компьютеров. Я не думаю, что создам исполняемый формат для своей операционной системы, так как моя операционная система не будет достаточно динамичной, чтобы ее требовать.
My status: Я работаю на ноутбуке x86-64 Windows 8 с процессором Intel Celeron; Я считаю, что он использует безопасную загрузку. Я бы тестировал свою операционную систему на рабочем столе x86-64 с процессором Intel Core I3. У меня есть среднее понимание операционных систем и их методов. Я знаю теорию C, ASM и компьютер, необходимую для этого проекта. Я думаю, что также стоит отметить, что мне шестнадцать лет без формального образования по информатике.
Мое исследование: После поиска в Google, для которого обычно компилируется C, я нашел ответы, начиная от машинного кода, двоичного, простого двоичного, исходного двоичного, сборочного и перемещаемого объектного кода. Сборка, как я понимаю, обычно собирается в исполняемый файл в формате PE. Я слышал о компиляторах Cygwin, GCC C и MingW C. Что касается ассемблеров, я слышал о FASM, MASM и NASM. Я искал такие сайты, как OSDev и OSDever.
Что я пытался: Я попытался настроить GCC (кошмар) и создать кросс-компилятор (другой кошмар).
Заключение: Как вы можете судить, я не согласен с компиляторами, сборщиками и исполняемыми форматами. Пожалуйста, развейте мое невежество и ответьте на мои вопросы. Вероятно, это единственное, что мешает мне иметь ОС в моем резюме. Извините, я бы включил больше ссылок, но stackoverflow не позволил мне сделать больше двух. Благодаря тонну!
Этот проект, вероятно, слишком далеко. Прямо сейчас вы должны снизить свои взгляды и работать над этим. –
Все, что вам нужно, это простой GCC с обычной toolchain (в частности, ld), а не цепочка инструментов кросс-компилятора. См. Http://wiki.osdev.org/Bare_Bones – Mat
«Какой компилятор я могу использовать и как его использовать для компиляции исходного кода C в машинный код?» - Любые. «Какой ассемблер можно использовать и как его использовать для сборки ASM для машинного кода?» - Любые. Цель этих инструментов, по определению, - это то, что вы описали. –