2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3, 4  След.
 
 Операционно-независимый C
Сообщение19.03.2010, 21:03 
Здравствуйте!
Предположим, я решил написать операционку. На Си. Типа как Linux. Как это? Ведь обычный Си использует прерывания ДОС, формат exe-файла. Си ведь умеет писать "неотформатированные" программы? Надо переписывать obj-файлы, я прав?

 
 
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 21:40 
Аватара пользователя
Советую почитать дев раздел доков по последовательности загрузки начиная с mbr и используемому бут-лоадеру. Уже от бут-лоадера будет зависеть формат файла точки запуска. Ключевые слова: grub, lilo, ntldr.

 
 
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 21:51 
2kuraga
Язык C -- это именно язык. Он достаточно низкоуровневый и на нем можно писать программки, не использующие возможности конкретной ОС. Компилятор/компоновщик, как правило, имеют ключи для генерации "сплошных" бинарников.

Вот, например, в ОС Windows компиляторы из MS VS такие бинарники генерировать не умеют, но есть стандартная программка exe2bin.exe, позволяющая вырезать из exe'шника все лишнее.

В общем, нужно разбираться с каждым конкретным случаем.

P.S.: Тема очень интересная. Но для вас, думаю, сложная. Попробуйти "поковырять" что-нибудь готовое. Исходники того-же linux'а или гляньте в сторону minix'а (у него очень маленькое ядро которое легко прочитать целиком).

 
 
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 22:50 
Нет, может для меня и не сложная, я просто не знаю как спросить :D

Ну вот каким образом Линукс компилируется? С какими-то параметрами компайлер запускается?

 
 
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 22:56 
kuraga в сообщении #299514 писал(а):
Предположим, я решил написать операционку. На Си. Типа как Linux.

Может быть для начала поставить задачу поскромнее? Например написать программу делающую что то простое, но осмысленное без операционной систему - допустим загружающееся с флешки или с образа диска.

kuraga в сообщении #299514 писал(а):
Ведь обычный Си использует прерывания ДОС

Сам Си не использует - используют его библиотечные функции.

kuraga в сообщении #299514 писал(а):
Си ведь умеет писать "неотформатированные" программы? Надо переписывать obj-файлы, я прав?

Во что и как скомпонуете так оно и будет.

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 00:34 
Roman Voznyuk в сообщении #299560 писал(а):
kuraga в сообщении #299514 писал(а):
Предположим, я решил написать операционку. На Си. Типа как Linux.

Может быть для начала поставить задачу поскромнее? Например написать программу делающую что то простое, но осмысленное без операционной систему - допустим загружающееся с флешки или с образа диска.

Я утрированно. Чтобы объяснить.

Roman Voznyuk в сообщении #299560 писал(а):
kuraga в сообщении #299514 писал(а):
Ведь обычный Си использует прерывания ДОС

Сам Си не использует - используют его библиотечные функции.

Разумеется. Я написал абсолютно неверно.

Roman Voznyuk в сообщении #299560 писал(а):
kuraga в сообщении #299514 писал(а):
Си ведь умеет писать "неотформатированные" программы? Надо переписывать obj-файлы, я прав?

Во что и как скомпонуете так оно и будет.

[/quote]
Так вот как надо?

Я пишу код на C. Тривиально - "int i; i:=5;". Допустим, я написал на Ассемблере MBR, который загружает com-файл в память с диска и передает на него выполнение. Так вот как мне откомпилировать такой com-файл из исходника на C?

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 02:17 
kuraga в сообщении #299602 писал(а):
Так вот как надо?

Я пишу код на C. Тривиально - "int i; i:=5;". Допустим, я написал на Ассемблере MBR, который загружает com-файл в память с диска и передает на него выполнение. Так вот как мне откомпилировать такой com-файл из исходника на C?

Насчет .com файла не знаю в том смысле что это такое.
Для получения бинарного образа почитайте man ld - там всяческие ключики есть типа с какого смещения исполняей код размещать и тому подобное.
Разберитесь чего там для MBR требуется.
Другое дело что трудно представить для чего может поребоваться подобное "изобретение велосипеда".

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 02:24 
kuraga в сообщении #299602 писал(а):
Я пишу код на C. Тривиально - "int i; i:=5;".
Мелкая придирка: это не то чтобы совсем С. Это скорее где-то между С и Паскалем. :mrgreen:

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 02:58 
Да, Паскаль, чтоб его, все мозги переморочил... Убивайте. Стыдно. Но учу его, и все уже на рефлексах...

-- Сб мар 20, 2010 03:01:55 --

Roman Voznyuk в сообщении #299619 писал(а):
[quote="kuraga в Другое дело что трудно представить для чего может поребоваться подобное "изобретение велосипеда".

Так это понятно - для знаний. Я годы не могу понять (сейчас об этом вспомнил), как на C написать нечто, что исполняется без DOS.

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 03:48 
kuraga в сообщении #299624 писал(а):
Я годы не могу понять (сейчас об этом вспомнил), как на C написать нечто, что исполняется без DOS.

Соберите минимальное ядро линукса и запустите в нем только вашу программу. Вполне практически востребовнная задача.
Люди ведь специально придумали все эти стандартные библотеки чтобы делать программы на Си более или менее переносимыми.

 
 
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 04:30 

(Оффтоп)

2kuraga
Цитата:
Да, Паскаль, чтоб его, все мозги переморочил... Убивайте. Стыдно. Но учу его, и все уже на рефлексах...

Дык у меня тоже самое. Четыре года интенсивно писал на паскалях (учеба). Теперь постоянно th начинаю набирать после if(...). :)

 
 
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 19:26 
kuraga в сообщении #299624 писал(а):
Я годы не могу понять (сейчас об этом вспомнил), как на C написать нечто, что исполняется без DOS.

:)
Не поверите, я никогда не писал на С под DOS. И как-то мои программы в линуксе работают...
Как вообще можно связывать язык программирования с операционной системой? Если вы пишете POSIX-совместимую программу, она скомпилируется в любой POSIX-совместимой операционке.

 
 
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 20:07 
Насколько я понимаю, вопрос в том, как скомпилировать, скомпоновать и загрузить программу, которая работает вообще без операционной системы (с собственным загрузчиком).

 
 
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 23:58 
Maslov, именно. Щас поковыряюсь.

 
 
 
 Re: Операционно-независимый C
Сообщение23.03.2010, 00:35 
Maslov в сообщении #301002 писал(а):
Насколько я понимаю, вопрос в том, как скомпилировать, скомпоновать и загрузить программу, которая работает вообще без операционной системы (с собственным загрузчиком).

Так это все равно, что писать свою операционную систему... А как с железом работать? Это же миллионы строк. Вот для микропроцессоров что-нибудь подобное сделать возможно.

 
 
 [ Сообщений: 52 ]  На страницу 1, 2, 3, 4  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group