Как собрать образ ядра с помощью Visual Studio? - PullRequest
7 голосов
/ 21 марта 2009

Я бы хотел собрать встроенное ядро ​​для машины x86 с использованием Visual C ++. У меня есть несколько файлов кода C и ассемблера для компиляции, и я хотел бы связать их все вместе таким образом, чтобы это было совместимо с мультизагрузочным загрузчиком, таким как GRUB.

1 Ответ

6 голосов
/ 21 марта 2009

OSDev имеет вики-запись в Visual Studio , которая может дать некоторое представление, особенно со ссылками на блог записей Кашика Среневасана по теме PE ядра, предназначенные для загрузки мультизагрузочными загрузчиками (например, GRUB).

Пара больших, широких штрихов, которые вы должны знать:

  • В заголовке мультизагрузки вам необходимо использовать AOUT kludge.
  • Вам необходимо указать аргумент / BASE: 0x100000 для компоновщика, чтобы окончательный двоичный код основывался на том, куда его поместит загрузчик.
  • Точка входа вашего ядра (обычно называемая 'kmain') должна иметь __declspec(noreturn), и вам нужно будет сделать __asm { hlt } вместо возврата.
...