Посмотрел это видео. Стало интересно как вообще пишутся программы, работающие прямо «на железе», все ос? Насколько сложно написать такой хелловорлд? Насколько хорошее знание asm, C нужно? Есть ли инструменты, облегчающие этот процесс?
знать нужно не си и асм, а собственно как платформа работает, как вывести буквы на экран и как контроллер клавиатуры заюзать, как таймеры заюзать, как питанием поуправлять.
Ну вот чтобы разобраться в ядре, нужно сначала понять, как это работает на простом примере. Только потом можно будет пытаться делать что-то более сложное.
Забить три регистра и вызвать из BIOSа int 10h, примерно весь hello word. Ввод с клавы 9 и 16 прерывание, если живо еще такое понятие. И в сектор загрузочный засунуть.
зы. Если уж возится с железом, то с микроконтроллерами, можно что-нибудь полезное сделать. Время одиночек на писюках прошло, щас корпорации рулят.
Не сложно. Хоть по ссылке не ходил, могу поручиться головой что он проц в защищенный режим не переводит, а обращается к достаточно разлапистым сервисам BIOS в реальном режиме.
в бут-сектор на дискете^Wфлешке или жестком диске пишется на ассемблере код загрузчика. Код запускается в реальном режиме процессора, ему доступны прерывания биоса в качестве системных вызовов. В конце сектора должны быть байты 55, AA для указания того, что сектор загрузочный
Можно, но даже в те добрые времена были злые люди , которые постоянно нудели что это дурной тон, что типа видео страниц несколько, что бывают и будут другие видеоадаптеры. :)
Ну вот чтобы разобраться в ядре, нужно сначала понять, как это работает на простом примере. Только потом можно будет пытаться делать что-то более сложное.
Тебе, ламеру, не дано ни первое, ни второе, не гворя уже о третьем.
Видео не смотрел, ибо dial-up, но тупо загрузиться с GRUB-ом и вывести строку printf-ом несложно.
printf можешь взять из ядра netbsd, он там идеально сделан для работы на голом железе. http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/sandpoint/stand/netboot/Atti...
Чтоб не возиться со скроллингом при выводе в видеопамять, гоняй в QEMU и печатай в serial. По-моему, оттуда и ввод можно получать просто чтением портов, без возьни с прерываниями клавиатуры.
так ты поймешь только как работает унылый x86 и BIOS, а я например часто сталкиваюсь с различными ARM - вот что тебе должно хотеться изучать по идее - там нету BIOSов, и загрузчики типа u-boot (самый популярные наверное в мире не-x86) - работают с голым железом, и исходники в 99% случаев есть
Linux на платформе ARM вообще по сути работает на голом железе непосредственно, что мне очень нравится
но ядро реально можно загрузить даже без u-boot а лишь простой прошивочкой которая просто сначала память настроит несколько регистров, да из флэшки потянет в память - всё работает, сам свидетель как чел так и сделал без u-boot