Предположим, что захотел кто-то ОС написать (не я). Одно дело редактировать MBR в ассемблере, ставить проги-заглушки, чтоб при загрузки они выводили на экран что-то, что пихается в буфер видеопамяти, всё это пишется на асме. А вот как пишут что-то низкоуровневое на C??? Всякие C Run-Time Library на чём написанны? Каким образом только используя синтаксис C/C++ и какой-нибудь компилятор и линковщик, чтоб в итоге всё переводить в бинарник, можно написать что-то низкоуровневое? Тобишь как только используя C написать что-то, что можно просто пихнуть в первый сектор диска, и чтоб что-то вывелось на экран? Простите за глупый вопрос, но я вот лично не представляю как без ассемблера и\или asm вставок написать подобное. И где можно почитать про адресацию памяти в ОС? А то даже в хороших книгах по WINAPI пишут про то, как кодить на WINAPI, а не то, каким образом работает, так сказать, системная "ширма" (ну или чёрный ящик) выделения памяти, работа с экраном и т.д.
дык на С и асме и написаны. базовые вещи - на асме, остальное на С. еще более остальное - на С++. все как и должно быть винапи вам в разборках с осью не поможет. винапи это очень высокоуровневый рантайм, сам сидящий на куче других рантаймов а для понимания как и что пишется/работает ось, есть ряд книг. некоторые из них писаны прямо по исходникам доступной в инете опенсорсной оси. это и классические "современные" и ряд других, некоторые из которых были отебуккены тут в секции буков
Т.е. чисто теоритически обойтись только компилятором C и линковщиком в бинарник невозможно, как ни крути, все библиотеки по управлению памятью (её выделение и освобождение), прямой вывод в видеобуфер, обработка скан-кодов клавиш, всё это написано только на асме. Т.е. при разработки любой ОС сначала придётся кодить на асме всё что связанно с памятью, вводом/выводом, чтением диска, а только потом, когда всё это будет загнано в форм-фатор (то бишь в интерфейс) процедур и функций, можно делать из этого свою библиотеку, и только после этого начинается процесс кодинья на C, так?
Писать бутсектор на си - плохая идея Да и в любом случае потребуются асм-вставки. Ну что-то вроде того, да. Точнее на асме пишется все самое необходимое как правило, остальное пишется на Си. Управлять памятью, диском и пр. можно и из сей. Нужен лишь ассемблерный интерфейс работы с портами, структурами PDE/PTE (записывать cr3/cr0 надо же как-то).
http://wasm.ru/forum/viewtopic.php?id=32954 ну и сорцы, сорцы. у п9 и миникса сорцы маленькие. есть, вероятно, и минифорки линя. лучше 10 раз самому посмотреть, чем 1000 раз спросить или оо - предполагать/угадывать
таненбаума повторить забыл (вобщето писать почти на чем угодно можно. пишут оси и на #, и на жабе, и еще на чем. видел форк доса на пасе итд)
именно бутсектор или же код, запускаемый бутсектором? даже если и сам бутсектор, то я не говорил, что нельзя, я сказал, что плохая идея.
неполучиться там нужно четко выдержать что бы выполняемый код занял от $ и до $ только на asm можно четко выдержать db но дальнейший лоадер можно уже и на C благо дело за MBR еще дофига свободного места
блин, зачем писать бутсектор и лоадер? толку с того, что в вашем личном аж 3 команды будут уникальны и больше нигде не встречаться. о главном думайте, а не о шаблонном бутлоадере
кстати виндовый ntldr состоит из двух файлов - 16 битного startup.com и полноценной PE-шки osloader.exe, так вот часть startup.com написана на Си, а Си компилер генерит small модель и если конвертнуть в tiny ссылки к данным будут невалидными, поэтому используют еще асм модуль для рантайм фиксапа DS SS, ну и для других вещей, но невозможность генерить tiny модель Сишным компилером это основная причина. Это в исходниках NT4 в коментариях написано.
имхо, максимум что нужно от асма - специфические процессорные комманды + доступ к управляющим регистрам. всё это в сумме не больше нескольких десятков килобайт кода. всё остальное возможно написать хоть на Си, хоть на Си++. вот, кстати, интересная мысль - чисто плюсная ось. вместо таблиц экспорта - таблицы виртуальных функций (по типу COM) - тут даже преимущество будет в скорости работы. вместо миллиона разрозенных функций всё собрано в ком объектах. красота, имхо.
Great я имел ввиду что одна часть startup.com написана на Си а другая его часть на Асме, а osloader.exe да, полностью на Си