Bargest писал(а):
Вообще си (и любой другой язык программирования) компилируется один раз в машинный код и потом уже юзается на железе.
Вот такое я и хочу сделать - как можно больше сделать на Си, скомпилировать и записать на дискету ...
Только вот с gcc совершенно не знаком ... работаю на VC++2010 EE
pavia писал(а):
Перефразирую PCU. Аааа, что делать? Куда бежать?
Пока по вашему описанию ваша ОС будет напоминать DOS.
Вопрос в том будет она защищённая или нет?
Благодарю за ссылки. Кстати, БСП сейчас второй том изучаю.
Нет, защищенной не будет - для начала хочу увидеть что заработает то, что я сделаю. Сейчас задача - сделать как можно проще, но чтоб работало. А если на диплом буду делать, то уже подумаю чтобы серьезнее сделать , чем сейчас.
Да, ДОС, поскольку именно на ее примере я строю понимание работы ОС.
pavia писал(а):
Остальное я не понял.
Про компилятор отвечу так, каждый разбирается со своим компилятором разбирается сам. Часть ответов можно найти на OSdev.org
Обычно требуется получить чистый бинарник, то есть без привязки к каой-то ОС. В принципе это может быть BIN, COM, EXE-MZ, EXE-PE или ELF. Это зависит от ваших предпочтений и возможностей компилятора.
Да, хочу вот получить без привязки к ОС - на виртуальной машине не будет ОС - только дискета(с моей ОС) и железо.
Только вот проблема в том, что я не понимаю как это все будет ... я не понимаю что можно писать на Си , потому-что не понимаю что будет потом работать, а что не будет - может функциями какими-то нельзя пользоваться? а то не переведуться вдруг они в бинарник с расчетом на голое железо... или же можно спокойненько себе делать как-будто консольное приложение разрабатываю? а оно потом заработает как мое консольное приложение , только на голом железе?
Ну вот например, хочу я сделать чтобы когда моя операционка заработает было вот так:
1.Выводится приглашение "Введите действие с файлом" .
2.Я ввожу "OPEN".
3.Выводится "Введите требуемый файл".
4.Ввожу файл (имя).
5. ОС находит и открывает требуемый файл.
Так вот , напишу я это вот так на Си:
Код:
printf ("");
scanf("%s", id_instr);
printf("");
scanf("%s", id_file);
// ну здесь далее чтобы ОС нашла мой файл буду комбинировать Асм и Си ...
// а то мало ли как-там организую файловую систему ...
// а возможно на Си сделаю ... будет видно когда разберусь с текущей непонятностью... ведь узнаю возможности ...
И что будет если я так напишу часть ядра? Переведет оно его в бинарник ... будет ли оно также работать как если я сейчас сделаю "приложение DOS" и запущу? или какая будет разница?
Написание ОС процесс творческий, потому то, что я сделаю может и не будет улаживаться в стандарты. Главное что оно будет делать ТО, под ЧТО оно заточено. И главное что я пойму как работает все это ... хоть и пока мисть на примитивном уровне.
Вобще вот мое видение на текущий момент:
1. Делаю ядро только для работы с файлом - открытие/редактирование/создание. По возможности хочу сделать на Си, но как писал выше не понимаю что можно, а что нельзя ....
2. Так и не понял нужно консоль делать или компилятор с Си сделает консоль из scanf и printf. Если нужно , то делаю консоль.
3. Реализовываю файловую систему... еще не придумал какую , но принципы вроде понимаю - несколько взаимосвязанных таблиц с нужной информацией.
4. Реализовываю интерфейсы: консоль(если отдельно будет. ввод и вывод происходит именно сюда)+ядро(обрабатывает команду введенную в консоли и результат на консоль)+файловая система(предоставляет ядру нужную информацию). Собираю это все и записываю на дискету.
Я две недели уже смотрю невидящим взглядом на всякие статьи , запутался ... несколько дней назад понял - действительно пока не начнешь руками что-то делать, трудно будет в теории разобраться.
А вобще хочу заметить - ох и не легкое это дело для начинающего ... а ведь с примитивщиной разбираюсь ... но интересно оно как!