Загрузка с дискеты кода на Си (Системное программирование в GCC)

Модератор: Модераторы разделов

Аватара пользователя
AlexeyAL
Сообщения: 71

Загрузка с дискеты кода на Си

Сообщение AlexeyAL »

Помогите пожалуйста! В общем, суть проблемы в следующем: надо запустить загружаясь с дискетки прогу на Си. Загрузчик есть, исходник компилим с -ffreestanding -c. Но в таком случае мы не можем исползовать функции библиотек ОС(Linux). Т.е. даже printf не заработает. А что можно использовать, чтобы написать свои библиотеки? Где бы взять такой набор функций? Пока что ничего кроме inline assembler'а не нашел :(


Когда я вырасту и стану крутым программистом, я напишу свое ядро и подарю его Ричарду Столлмену
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Загрузка с дискеты кода на Си

Сообщение elide »

так вот как раз учебник по ассемблеру и нужно использовать.
а потом еще справочник по прерываниям BIOS.
и потом все ручками-ручками (:
мы таким занимались на СПО... очень мерзкое дело... сочувствую...
слава роботам!
Спасибо сказали:
Аватара пользователя
AlexeyAL
Сообщения: 71

Re: Загрузка с дискеты кода на Си

Сообщение AlexeyAL »

Печально :( Но все равно спасибо.


Когда я вырасту и стану крутым программистом, я напишу свое ядро и подарю его Ричарду Столлмену
Спасибо сказали:
Аватара пользователя
glist
Сообщения: 134
ОС: Debian Linux

Re: Загрузка с дискеты кода на Си

Сообщение glist »

помниться был сайтик посвящённый разработкам ОС дык вот, там было что то написано о том как это всё решить можно... в общем нужно написать свои функции для ввода/вывода. щас его правда нету, но где то у меня валялась интересующая вас информация.
Debian GNU/Linux, windowmaker, Centericq, Opera/Mozilla/links.
----------------------------------
Sending Kiddies to /dev/null
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Загрузка с дискеты кода на Си

Сообщение flook »

МОжно попробовать собрать его статически. -static... хотя glibc статически могут не лечь. Для этого советуется пересобрать оных с флагом -PIC.
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Загрузка с дискеты кода на Си

Сообщение oav »

AlexeyAL писал(а):
13.11.2005 11:08
Помогите пожалуйста! В общем, суть проблемы в следующем: надо запустить загружаясь с дискетки прогу на Си. Загрузчик есть, исходник компилим с -ffreestanding -c. Но в таком случае мы не можем исползовать функции библиотек ОС(Linux). Т.е. даже printf не заработает. А что можно использовать, чтобы написать свои библиотеки? Где бы взять такой набор функций? Пока что ничего кроме inline assembler'а не нашел :(


[напригая какие-то пыльные участки памяти]=)
если нужно printf сделать - то это просто.
const char* text_buf = 0xb00000 (ай ай не пинайте точно не помню)

это адрес начала текстового буфера. первый байт - символ, второй - аттрибуты (цвет и т.п.) 85x25 вроде размер экрана, соот. адрес символа (x,y) = 170*y+x*2 туда и пишешь.

если нужны фишки типа доступа к жесткому диску, то тут реальная проблема т.к. надо работать по портам i/o в случае если твоя программа в защищенном режиме (ОС пишемс? :), а если в реальном - то можно функции BIOS'a 10 прерываение вроде..

блин не перевились еще кулибины в России матушке :)

flook писал(а):
15.11.2005 17:05
МОжно попробовать собрать его статически. -static... хотя glibc статически могут не лечь. Для этого советуется пересобрать оных с флагом -PIC.

не поможет, т.к. glibc работает с ядром, а ядра вроде нет как я понял :rolleyes:
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Загрузка с дискеты кода на Си

Сообщение flook »

oav писал(а):
15.11.2005 18:40
flook писал(а):
15.11.2005 17:05

МОжно попробовать собрать его статически. -static... хотя glibc статически могут не лечь. Для этого советуется пересобрать оных с флагом -PIC.

не поможет, т.к. glibc работает с ядром, а ядра вроде нет как я понял :rolleyes:

Ну тады извините :) Забодается человек писать... Либо real mode либо долгий и утомительный кодинг по выставлению всех таблиц и (!) обработке прерываний...
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
nercus
Сообщения: 150

Re: Загрузка с дискеты кода на Си

Сообщение nercus »

Можно, кстати, глянуть на код grub'a или lilo.
Не помню, переключается ли груб в protected, но функциональность из него дернуть можно неплохо (сеть, фс, диск, вывод на экран).
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Загрузка с дискеты кода на Си

Сообщение oav »

flook писал(а):
16.11.2005 11:42
oav писал(а):
15.11.2005 18:40

flook писал(а):
15.11.2005 17:05

МОжно попробовать собрать его статически. -static... хотя glibc статически могут не лечь. Для этого советуется пересобрать оных с флагом -PIC.

не поможет, т.к. glibc работает с ядром, а ядра вроде нет как я понял :rolleyes:

Ну тады извините :) Забодается человек писать... Либо real mode либо долгий и утомительный кодинг по выставлению всех таблиц и (!) обработке прерываний...

Ну если они уже в защищенном режиме, то всe GDT,LDT,IDT заполнены и как-то программа функционирует, она просто не умеет пока работать с перефирией - экран, клавиатура (вроде 60(1) порты??) и т.п. :) эх, романтика!))
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Загрузка с дискеты кода на Си

Сообщение flook »

oav писал(а):
16.11.2005 12:14
Ну если они уже в защищенном режиме, то всe GDT,LDT,IDT заполнены и как-то программа функционирует, она просто не умеет пока работать с перефирией - экран, клавиатура (вроде 60(1) порты??) и т.п. :) эх, романтика!))

Мда? И кто его туда сунул? Ядро? Значит оно есть (прям по Декарту "мыслю, следовательно существую"), а значит можно и со статическими глибцами полинковаться...
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Загрузка с дискеты кода на Си

Сообщение oav »

flook писал(а):
16.11.2005 14:28
oav писал(а):
16.11.2005 12:14

Ну если они уже в защищенном режиме, то всe GDT,LDT,IDT заполнены и как-то программа функционирует, она просто не умеет пока работать с перефирией - экран, клавиатура (вроде 60(1) порты??) и т.п. :) эх, романтика!))

Мда? И кто его туда сунул? Ядро? Значит оно есть (прям по Декарту "мыслю, следовательно существую"), а значит можно и со статическими глибцами полинковаться...

ммм..нет, я предположил что это "сунул" автор программы. Вообщем-то это не бог весь какая задача если понимать что делаешь
Спасибо сказали:
Аватара пользователя
AlexeyAL
Сообщения: 71

Re: Загрузка с дискеты кода на Си

Сообщение AlexeyAL »

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

Хотя почему геморрой? это у меня развлечения такие...


Когда я вырасту и стану крутым программистом, я напишу свое ядро и подарю его Ричарду Столлмену
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Загрузка с дискеты кода на Си

Сообщение flook »

Возьмите /src/linux/arch/i386/kernel/head.S и мучайтесь меньше.
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Загрузка с дискеты кода на Си

Сообщение powerfox »

nercus писал(а):
16.11.2005 11:54
Можно, кстати, глянуть на код grub'a или lilo.
Не помню, переключается ли груб в protected, но функциональность из него дернуть можно неплохо (сеть, фс, диск, вывод на экран).


У меня возникла таже идея, только относительно Lilo(c графикой). Там даже есть поддержка jpg - можно сделать примитивные игры с дискеты.

А вообще всё ЭТО должно быть в книге Танненбаума "Операционные системы" - она помогла Торвальдсу написать Linux. Правда, она ОоОоОчЕнЬ большая и, наверняка, сложная.
Удачи.
Спасибо сказали:
XPhoenix
Сообщения: 28

Re: Загрузка с дискеты кода на Си

Сообщение XPhoenix »

www.codenet.ru - пишем многозадачную ОС....она правда не в защещенном режиме и на асме...Зато небольшая и забавная...Если только начинаешь - то самое оно...

А книжка Танебаума не самая большая...С хорошими исходниками...Только ОС у него в книге в нескольких местах сильно изуродована..специально наверное :)
Спасибо сказали: