2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Операционно-независимый C
Сообщение19.03.2010, 21:03 


08/11/09
156
Здравствуйте!
Предположим, я решил написать операционку. На Си. Типа как Linux. Как это? Ведь обычный Си использует прерывания ДОС, формат exe-файла. Си ведь умеет писать "неотформатированные" программы? Надо переписывать obj-файлы, я прав?

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 21:40 
Аватара пользователя


19/03/10
3
Советую почитать дев раздел доков по последовательности загрузки начиная с mbr и используемому бут-лоадеру. Уже от бут-лоадера будет зависеть формат файла точки запуска. Ключевые слова: grub, lilo, ntldr.

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 21:51 
Заслуженный участник


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

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

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

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 22:50 


08/11/09
156
Нет, может для меня и не сложная, я просто не знаю как спросить :D

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение19.03.2010, 22:56 


30/12/09
95
kuraga в сообщении #299514 писал(а):
Предположим, я решил написать операционку. На Си. Типа как Linux.

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

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

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

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

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 00:34 


08/11/09
156
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 


30/12/09
95
kuraga в сообщении #299602 писал(а):
Так вот как надо?

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

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 02:24 
Заслуженный участник


09/08/09
3438
С.Петербург
kuraga в сообщении #299602 писал(а):
Я пишу код на C. Тривиально - "int i; i:=5;".
Мелкая придирка: это не то чтобы совсем С. Это скорее где-то между С и Паскалем. :mrgreen:

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 02:58 


08/11/09
156
Да, Паскаль, чтоб его, все мозги переморочил... Убивайте. Стыдно. Но учу его, и все уже на рефлексах...

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

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

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 03:48 


30/12/09
95
kuraga в сообщении #299624 писал(а):
Я годы не могу понять (сейчас об этом вспомнил), как на C написать нечто, что исполняется без DOS.

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение20.03.2010, 04:30 
Заслуженный участник


26/07/09
1559
Алматы

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 19:26 


04/02/08
325
Буково
kuraga в сообщении #299624 писал(а):
Я годы не могу понять (сейчас об этом вспомнил), как на C написать нечто, что исполняется без DOS.

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

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 20:07 
Заслуженный участник


09/08/09
3438
С.Петербург
Насколько я понимаю, вопрос в том, как скомпилировать, скомпоновать и загрузить программу, которая работает вообще без операционной системы (с собственным загрузчиком).

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение22.03.2010, 23:58 


08/11/09
156
Maslov, именно. Щас поковыряюсь.

 Профиль  
                  
 
 Re: Операционно-независимый C
Сообщение23.03.2010, 00:35 


04/02/08
325
Буково
Maslov в сообщении #301002 писал(а):
Насколько я понимаю, вопрос в том, как скомпилировать, скомпоновать и загрузить программу, которая работает вообще без операционной системы (с собственным загрузчиком).

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group