Задать вопрос
@denisramus

Можно ли на чистом си(без вставок ассемблера) написать ос?

Можно ли на чистом си(без вставок ассемблера) написать ос?
  • Вопрос задан
  • 511 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
Immortal_pony
@Immortal_pony
Можно.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вот люди пишут "можно", но никто из них не уточняет при этом, что такое "чистый С".
Если "чистый С" -- это только то, что предоставляет сам язык, скажем, стандарта C99 или C11, то у вас возникнут проблемы в следующих областях:
- управление прерываниями: обычно выполняется через специальные регистры или специальными ассемблерными командами.
- обработчики прерываний: в зависимости от архитектуры вам нужны будут функции со специальными прологами и эпилогами, сохраняющими и восстанавливающими все регистры и, возможно, возвращающиеся особым образом.
- управление MMU: обычно выполняется через специальные регистры или специальными ассемблерными командами.
- управление кешем: обычно выполняется через специальные регистры или специальными ассемблерными командами.
- порождение процессов и переключение контекстов: теоретически можно сделать с помощью setjmp/longjmp, но вам придётся разобраться со структурой jmpbuf для вашей архитектуры, поскольку для новых процессов её нужно будет заполнить вручную.
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
Нельзя.
Но главное не то, что нельзя, а то, что не нужно.

P..S. "можно" пишут люди, которые никогда в глаза не видели код ни одной операционной системы.
Ответ написан
Комментировать
@mamkaololosha
Да, можно. Скорее всего у тебя выйдет какая-нибудь недо-читалка-писалка на диск и всё. Почитай Таненбаума. Или как Торвальдс писал линукс. ОС это не проект для 1 человека на вечер. Обычно затеи типа "вот щас вот я как понапишу всего! мир содрогнется!" заканчиваются так же быстро как и начинаются.
Ответ написан
Комментировать
ImmortalCAT
@ImmortalCAT
C# loving
Можно, и без пули застрелится...
Ответ написан
Комментировать
@Eddy_Em
Невозможно. Потому что нужно будет как минимум gcc под эту архитектуру написать → пользовать ассемблерные вставки (взять, хотя бы, обработку прерываний, исключений и всякой эдакой низкоуровневой шняги).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы