Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание своего компилятора C а потом своей ОС на нем!!!

4.7K
27 января 2004 года
QWERTYura
14 / / 01.11.2003
Объяснять как и спрашивать пока нечего.
Тему видели и если есть чем поделиться пишите.
Если нет, но тема интересна смотрите за обновлениями форума.



PS :!!!:
Только одна просьба не засоряйте форум и не пишите не по делу, например не надо делиться своими впечатлениями(как отрицательными так и положительными).
Страницы:
13K
07 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by koderAlex
К стати : в QNX большая дырка обнаружилась - выполнение пользовательского кода в 0 кольце . Есть боольшая вероятность что таже дыра во всех линухах есть (про вин вообще молчу ). :) :)



Дык вот!.. как раз для того, чтобы создать "чистую" ОС, и нужно писать её "с нуля". Зато потом будешь гордиться: вот, эту ОС я написал от начала до конца сам!

Единственно что ещё: чтобы отлавливать ошибки, нужно предельно подробно комментировать код. Да, даже для себя! Я, например, всегда комментирую код, потом просто легче выявить, где в программе ошибка. А тут - целая система!

Конечно, с одной стороны, замучаешься писать первый загрузчик, второй, ядро, драйверы клавиатуры, монитора, принтера (!), ..., описывать файловую систему, работу с дисками, ..., но как потом будет приятно, что ты всё это сделал сам!

Я всё-таки соберусь и начну делать систему. Конечно, пока что она будет работать с дискеты (не хотелось бы гробить компьютер! :)), пока что в текстовом режиме...

17K
07 апреля 2006 года
Potter
6 / / 07.04.2006
Ребят, вы, по-моему, отошли от темы - Создание своего компилятора.
Вот, что я скажу - лучше писать не компилятор, а надстройку для С или С++, и сил и нервов меньше потрачено будет. А ещё лучше чтобы такой "крокодил" русский язык понимал, к примеру:
" если а > б
{
a = b^3 + 10;
}
иначе
выход;
"
:D
13K
07 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by Potter
Ребят, вы, по-моему, отошли от темы - Создание своего компилятора.
Вот, что я скажу - лучше писать не компилятор, а надстройку для С или С++, и сил и нервов меньше потрачено будет. А ещё лучше чтобы такой "крокодил" русский язык понимал, к примеру:
" если а > б
{
a = b^3 + 10;
}
иначе
выход;
"
:D



Вот-вот, в принципе о создании варианта языка C/C++ (зависит от конкретного контекста) радеет чуть ли не каждый программист. Можно вообще сделать довольно сложную штуку: язык программирования, полностью имитирующий естественный язык (в данном случае - русский). Правда, это выходит за рамки нашей задачи, но тем не менее. Ведь с чего всё начиналось? Программисты (тогда - просто энтузиасты) стремились создать язык, на котором человек мог бы на равных общаться с машиной, т.е. выполнял бы коммуникативную функцию. Что же, искусственные языки, которые существуют сейчас, такую функцию выполняют, но лично мне кажется, что Си слишком уж удалён от естественного языка. Нужно придумать что-нибудь попроще, интуитивнее, чем C, т.е. создать вариант этого языка.

Если этот вариант языка использовать в дальнейшем в качестве основного (и единственного) языка в системе, то это будет уникальный случай, когда русскоязычная операционная система основана на русскоязычном же языке программирования. Об этом можно подумать...

2.9K
07 апреля 2006 года
RYM
109 / / 06.06.2005
КУМИР рулит:D
13K
07 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by RYM
КУМИР рулит:D



Что это значит?

14K
08 апреля 2006 года
Max aka "amv"
23 / / 02.04.2006
Цитата:
Originally posted by QWERTYura
Объяснять как и спрашивать пока нечего.
Тему видели и если есть чем поделиться пишите.
Если нет, но тема интересна смотрите за обновлениями форума.



PS :!!!:
Только одна просьба не засоряйте форум и не пишите не по делу, например не надо делиться своими впечатлениями(как отрицательными так и положительными).


Хорошая идея.
В принципе, можно достать любой компилятор с открытыми исходными кодами (gcc, к примеру), а потом убрать от туда все признаки системности - т.е. реализовывать все системные вызовы как вызовы к BIOS или напрямую к устройствам и т.п. Если работать с нуля, то, imho, куча проблем будет - реализация всех стандартных вещей и т.п.
На переписанном таким образом gcc, опять же imho, можно будет достаточно легко реализовать систему.
А фича лучше - убрать все системные вызовы и засунуть функцию-оболочку для вызова BIOS'ных прерываний, обращения напрямую к устройствам.

1.9K
08 апреля 2006 года
disasm
232 / / 06.02.2006
Цитата:
Originally posted by Potter
Ребят, вы, по-моему, отошли от темы - Создание своего компилятора.
Вот, что я скажу - лучше писать не компилятор, а надстройку для С или С++, и сил и нервов меньше потрачено будет. А ещё лучше чтобы такой "крокодил" русский язык понимал, к примеру:
" если а > б
{
a = b^3 + 10;
}
иначе
выход;
"
:D


А теперь подумаем как это запарит: переключаться с
одной разкладки на другую :)
В русской ведь символа } нет (я уже не говорю про другие) :)

4.2K
08 апреля 2006 года
nvm
40 / / 24.12.2003
Цитата:
Originally posted by disasm
А теперь подумаем как это запарит: переключаться с
одной разкладки на другую :)
В русской ведь символа } нет (я уже не говорю про другие) :)


Не проблема - закажем у китайцев произвести новые клавиатуры, кнопок на 10 побольше.

13K
08 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by disasm
А теперь подумаем как это запарит: переключаться с
одной разкладки на другую
В русской ведь символа } нет (я уже не говорю про другие)



Почему так ограниченно мыслите? Что для нас стоит создать кнопку, по нажатию которой в текст будет вставляться заготовка операторных скобок? Какие здесь сложности-то? Надеюсь, Вы, уважаемый disasm, не в "Блокноте" будете писать систему: для этих целей есть специализированные редакторы. Можно ТАКОЙ сделать, что Борланд будет отдыхать...

1.9K
08 апреля 2006 года
disasm
232 / / 06.02.2006
Цитата:
Originally posted by Delphiprogramer
Почему так ограниченно мыслите? Что для нас стоит создать кнопку, по нажатию которой в текст будет вставляться заготовка операторных скобок? Какие здесь сложности-то? Надеюсь, Вы, уважаемый disasm, не в "Блокноте" будете писать систему: для этих целей есть специализированные редакторы. Можно ТАКОЙ сделать, что Борланд будет отдыхать...


Не спорю. Только зачем делать русский кимпилер?
Что английских символов не хватает? :)
А я пишу в обычном Midnight Commander на обычном
GCC.

11K
09 апреля 2006 года
ArtemESC
14 / / 19.02.2006
Цитата:
Originally posted by QWERTYura
Объяснять как и спрашивать пока нечего.
Тему видели и если есть чем поделиться пишите.
Если нет, но тема интересна смотрите за обновлениями форума.



PS :!!!:
Только одна просьба не засоряйте форум и не пишите не по делу, например не надо делиться своими впечатлениями(как отрицательными так и положительными).



Вообще лучше напиши загрузчик стандартных PE файлов
на ассемблере, тогда наверное проще
будет...

1.9K
09 апреля 2006 года
disasm
232 / / 06.02.2006
Предлагаю разделить форум на две части:
1. Поиск компилера, который не использует особенностей ОС
2. Собственно предложение идей и написание компилятора
1.9K
09 апреля 2006 года
disasm
232 / / 06.02.2006
А вообще я и не против написания своего компилятора.
391
10 апреля 2006 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by disasm
А вообще я и не против написания своего компилятора.


А вы вообще кроме C и Pascal-я еще какие-нибудь языки рассматривали "наиболее близкие" к естественным, скажем Smalltalk?
И еще, на русском языке пишите себе, пожалуйста, в VS 2005:
#define если if
и в таком духе... и идентификаторы рускоязычные он прекрасно понимает.

284
10 апреля 2006 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by disasm
А вообще я и не против написания своего компилятора.


Если тебе знакомы имена Ахо, Ульмана, а также их книги. То тогда еще можно поверить, что создашь свой полноценно работающий компилятор.

13K
10 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Посидел тут, подумал, и пришёл всё-таки к таким выводам.

Изменения в структуре языка обычно делают только те программисты, которые каждый день над этим языком работают, его создают. Поэтому все языки программирования реализованы без ошибок, на высоком профессиональном уровне. Пусть кто-то попробует упрекнуть Microsoft в том, что дядя Билл криво реализовал язык C или C++ - ничего не выйдет. А вот если каждый начнёт лазать в исходники C/C++, то тут уж стабильности ждать не придётся... Да и зачем нужно что-то менять в этих языках? Хорошие языки - ну и что, что корявые, по крайней мере реализованы идеально. А то ещё создавать компилятор, на котором потом писать ОС... да это сколько же времени уйдёт на один компилятор. Новая ОС - идея хорошая, но свой компилятор зачем создавать? Каждый уважающий себя программист должен написать файловый менеджер, текстовый редактор и операционную систему - это я слышал уже давно. Но писать свой компилятор... Да ещё и переделывать зачем-то C, чтобы команды можно было писать по-русски... Мысль совершенно дикая. Зачем сие нужно? Почему же тогда индийские программисты не переделывают C, чтобы можно было писать на хинди, а арабы не переделывают C, чтобы можно было писать команды на арабском, а французы не переделывают C, чтобы можно было писать команды по-французски? Извините, конечно, но эта ваша идея о переделке C - бред, натуральный бред. Над этим все профессионалы вдоволь посмеялись бы.
3
10 апреля 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Delphiprogramer
Поэтому все языки программирования реализованы без ошибок...


Так не бывает. Даже Бог допускает ошибки. ;)

Цитата:
Originally posted by Delphiprogramer
Пусть кто-то попробует упрекнуть Microsoft в том, что дядя Билл криво реализовал язык C или C++ - ничего не выйдет.


Легко! Но повторяться не буду, пройдись по этому форуму, по rsdn, загляни и на MS.

Цитата:
Originally posted by Delphiprogramer
Хорошие языки - ну и что, что корявые, по крайней мере реализованы идеально.


Я бы сказал, что действительность строго обратная.

Цитата:
Originally posted by Delphiprogramer А то ещё создавать компилятор, на котором потом писать ОС... да это сколько же времени уйдёт на один компилятор.


А вот тут правильно мыслишь.

Цитата:
Originally posted by Delphiprogramer Каждый уважающий себя программист должен написать файловый менеджер, текстовый редактор и операционную систему - это я слышал уже давно.


Надеюсь, эту шутку ты не воспринимаешь, как призыв к действию?

Цитата:
Originally posted by Delphiprogramer Над этим все профессионалы вдоволь посмеялись бы.


Ну собственно, вот: :D :D :D :D :D

13K
10 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by Green
Так не бывает. Даже Бог допускает ошибки. ;)


Бывает. Например, без единой ошибки реализованы компиляторы языков Delphi, семейства языков C...

Цитата:

Легко! Но повторяться не буду, пройдись по этому форуму, по rsdn, загляни и на MS.


Хорошо, посмотрю, но я хорошего мнения о средах программирования Microsoft'а.

Цитата:

Я бы сказал, что действительность строго обратная.



Вы считаете, что C не корявый язык?! Самый "красивый" (т.е. максимально приближенный к естественному) язык - это Delphi, но на нём, согласен, ОС не сделаешь... Ради одного этого стоит выучить C++.

Цитата:

Originally posted by Delphiprogramer Каждый уважающий себя программист должен написать файловый менеджер, текстовый редактор и операционную систему - это я слышал уже давно.

Надеюсь, эту шутку ты не воспринимаешь, как призыв к действию?


Не воспринимаю, конечно, ибо есть же Total Commander, есть Word (правда, это текстовый процессор)... А вот ОС сделать было бы очень интересно.

Моё мнение таково: берёшь Ассемблер (только какой? посоветуйте, пожалуйста, я могу по eMule скачать), берёшь C/C++ (С++ менее корявый, ИМХО), и пишешь ОС. ВСЁ! Никаких самодельных компиляторов выдумывать не надо - это пустая трата драгоценного времени. Лучше поберечь силы на написание хороших (без ошибок!) загрузчиков и хорошего (тоже без ошибок!) ядра. Ну, и драйверы, само собой, не помешали бы. Неплохо, если бы всё это было стандартизовано. Ну, вот и всё...

Сам бы сделал, только не на чем (нет Ассемблера и C++).

3
10 апреля 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Delphiprogramer
Бывает. Например, без единой ошибки реализованы компиляторы языков Delphi, семейства языков C...


:D
Еще раз повторяю: НЕ БЫВАЕТ. Это противоречит законам физики. :)

А тем более уж в таком широком контексте как "компиляторыя языков" и "семейства языков".
В семействе не без уродства. :D

Кстати, как мне казалось в Делфи один язык - Pascal, а не "компиляторы языков Delphi".

Цитата:
Originally posted by Delphiprogramer
Хорошо, посмотрю, но я хорошего мнения о средах программирования Microsoft'а.


Ну для начала, мы говорим не о средах, а о компиляторах, хотя и в средах багов порядочно.

Да и потом, я хорошего мнения об А.Джоли, но и она не идеал... :)

Цитата:
Originally posted by Delphiprogramer
Вы считаете, что C не корявый язык?!


Критерий "корявости", пожалуйста?
Что же касается моего мнения, то оно такое: язык С в полной мере соответствует своему назначению.

Цитата:
Originally posted by Delphiprogramer
Самый "красивый" (т.е. максимально приближенный к естественному) язык - это Delphi,


Критерий "красоты", пожалуйста?
Что значит "максимально приближеный"?
А если я буду утверждать, что самый красивый язык Python, ты будешь со мной спорить?
А какой язык красивее: турецкий, японский или испанский?

Цитата:
Originally posted by Delphiprogramer
Моё мнение таково: берёшь Ассемблер (только какой? посоветуйте, пожалуйста, я могу по eMule скачать), берёшь C/C++ (С++ менее корявый, ИМХО), и пишешь ОС. ВСЁ! Никаких самодельных компиляторов выдумывать не надо - это пустая трата драгоценного времени. Лучше поберечь силы на написание хороших (без ошибок!) загрузчиков и хорошего (тоже без ошибок!) ядра. Ну, и драйверы, само собой, не помешали бы. Неплохо, если бы всё это было стандартизовано. Ну, вот и всё...


IMHO написание ещё одной ОС - так же пустая трата времени. Для этого нужны очень категоричные основания.

349
10 апреля 2006 года
Phantom-84
656 / / 27.10.2005
Цитата:
Originally posted by Delphiprogramer
Моё мнение таково: берёшь Ассемблер (только какой? посоветуйте, пожалуйста, я могу по eMule скачать), берёшь C/C++ (С++ менее корявый, ИМХО), и пишешь ОС...Сам бы сделал, только не на чем (нет Ассемблера и C++).

NASM или FASM плюс Watcom C. Лично я пишу только на FASM!

13K
10 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Критерии корявости: излишне сложные конструкции, например case (или select). В языке Delphi (бывший Obect Pascal) это реализовано гораздо лучше; правда, в Delphi нет выбора из строк. Сложные заголовки функций - замучаешься учить и писАть. В языке Delphi это выучивается очень легко.
Слишком сложные, накрученные донельзя объявления типов, переменных, подключения модулей и т.д.

Критерии красоты. Чётко выстроенный, синтаксически стройный язык. Это и есть Delphi. Достаточно посмотреть, как объявляются объекты на C/C++ и на Delphi (Object Pascal). Разница колоссальная. Совершенно непонятные, ненужные нагромождения синтаксем и "прозрачность", логичность, интуитивность. Исходники на Delphi очень легко читаются. А на C чего стоят одни эти фигурные скобки. Может быть, кому-то они и нравятся, кажутся удобными, но для меня фигурные скобки - это скорее мусор, чем операторные скобки. Но это ИМХО.

Язык программирования тогда максимально приближен к естественному языку, когда у них максимально схож синтаксис и когда меньше используется всяких подчёркиваний, void'ов, звёздочек * и прочего, без чего можно было бы обойтись. Я слышал, что Страуструп поспорил с кем-то чуть ли не на ящик пива, что он создаст самый корявый язык программирования. Он выиграл это пари - так появился C. Разумеется, это шутка, - но в каждой шутке есть доля шутки.

Таково моё мнение о языке C.
551
10 апреля 2006 года
Pavia
357 / / 22.04.2004
Под Си я понимаю все семейство Си, Си++.
Каждый пишет на том, на чем ему удобнее.
Я не буду разбирать, что лучше, что хуже.
Скажу, что в каждом языке есть свои приимущества и свои недостатки. У Си много дастоинств и много недостатков. Си уже давно рабочая лошадка. Паскаль тоже хороший язык программирования, но по некоторым параметрам не дотягивает до Си. Хотя у него есть свои преимущества перед Си.

PS. Лично мой выбор Delphi.
3
10 апреля 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Delphiprogramer
замучаешься учить и писАть

А на C чего стоят одни эти фигурные скобки. Может быть, кому-то они и нравятся, кажутся удобными, но для меня фигурные скобки - это скорее мусор, чем операторные скобки.


О да... Научный подход - "замучаешься учить", критический недостаток - "эти фигурные скобки".
:D :D :D

Ну и все остальное повкствование - последствие критерия "замучаешься учить".

Цитата:
Originally posted by Delphiprogramer
Достаточно посмотреть, как объявляются объекты на C/C++ и на Delphi (Object Pascal). Разница колоссальная.


Угу просто опупительная разница:
С++: Type object;
Pascal: object: Type;

Цитата:
Originally posted by Delphiprogramer
Исходники на Delphi очень легко читаются.


Поспорим, что китаец скажет, что иероглифы читаются легче, чем это нагромождение букв?

Цитата:
Originally posted by Delphiprogramer
Язык программирования тогда максимально приближен к естественному языку, когда у них максимально схож синтаксис


Схож с чем? С русским языком? С английским?
Begin ты не прав end.

Цитата:
Originally posted by Delphiprogramer когда меньше используется всяких подчёркиваний,


Подчеркиваний? Каких подчеркиваний?

Цитата:
Originally posted by Delphiprogramer
void'ов, звёздочек * и прочего, без чего можно было бы обойтись.


Впрочем, без крышечек (^) и собачек (@) тоже можно обойтись. :D

Ну и заключение:
Если ты выбираешь язык по синтаксису, то надежнее выбирать с помощью монетки. Это просто: орел - С++, решка - Pascal.

13K
11 апреля 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by Green

Угу просто опупительная разница:
С++: Type object;
Pascal: object: Type;


Да, разница есть! Но спорить больше не буду. C логичнее и стройнее Delphi (который почему-то упорно называется здесь Pascal'ем), C совсем не корявый, в нём все конструкции организованы лучше, интуитивно он более понятен и его можно выучить на досуге, между двумя чашками кофе, когда больше нечего делать.

Но действительно, есть вещи, которые на Delphi не сделаешь. Я говорю о драйверах для будущей ОС. Расписывать ничего не буду, потому что здесь и так все такие умные, куда там... Во всяком случае, программка с заголовком Windows в ОС, сделанной по канонам Linux (не нравится слово "канон"? тогда уж "по образу и подобию", как вам будет угодно), просто не будет запускаться. Вообще-то драйвера лучше вообще писать на masm'е, но это долго.

На masm'е вполне можно написать загрузчик (512 байт), второй загрузчик (до 200 с лишним КБ), ну и кое-какие части драйверов, хотя я пока что не представляю точно, какие именно. Но что должно быть в первом загрузчике, представляю точно. Я даже знаю, где взять информацию, только не хотелось бы всё оттуда списывать. Что-то определённо нужно добавить от себя, хотя бы в ядро.

А не замахнуться ли, в принципе, на "Вильяма нашего Шекспира", т. е. на экзоядерную ОС? Это вариант №1. Вариант №2: попробовать создать систему, под которой запускались бы (и благополучно выполнялись) программы , написанные для ОС: Linux, FreeBSD, Windows, MacOS, Sun OS и... пока всё. Т.е. сделать ОС, способную эмулировать перечисленные выше системы. Либо это будет многоядерная ОС (возможно ли это?), либо что-то ещё, нужно уточнить, но такое возможно. Напоминаю, что речь идёт не о виртуальной машине, а об ОС!

Да, и ещё. ОС должна изначально поддерживать связь с Интернетом, так что придётся ещё драйвер для модема писать. Не представляю, насколько это сложно, но можно. Можно почувствовать себя Биллом Гейтсом (во всяком случае, одним из его сотрудников), создавая API для модема. Как вам такое? :))

551
11 апреля 2006 года
Pavia
357 / / 22.04.2004
To Delphiprogramer
И сново ты ошибаешься. На дельфи можно написать драйвер. Примеры найдешь на исходниках. :)

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

Не представляю, как можно совместить две и более совершенно различные ОС. Ядро одно. Система драйвироа тоже должна быть едина, но при этом придоставлять доступ для различных под систем. Ты с этим запаришся. Ты должен будешь эмулировать всю аппаратуру, так как системы драйверов различны а если ты оставишь одну подсистему драйверов, то часть программ не будет работать вовсе. Да и Линукс я все еще плохо знаю.

Про модем ничего не скажу ище не смотрел у нас все больше сетевые карты распростоненны.
4.7K
03 мая 2006 года
QWERTYura
14 / / 01.11.2003
я тут смотрю тема, которую я завел 2 года назад вдруг ожила :) - а значит не перевелись еще люди которых это интересует

Самим проектом я забросил заниматься еще год назад - работа семья и все такое

Но вот мое мнение ко всему выше сказанному

Что ОС, что компилятор стоит писать только для развлечения и собственного развития. Ну не составите вы конкуренции ни Windows, ни Unix. Но если хочется написать что-то полезное полазийте в уже существующих ОС, которые имею распространение.
- В них достаточно дыр.
- Ваша работа имеет шансы на использование,
- да и возможно вас "заметят" (лично я слышал такие истории).

Но если все таки рашили что-то написать для души - пишите OC. это гораздо интереснее.
Алгоритмы писать лучше на C
а работу с железом на Asm (переключение задач, работа с портами)

Почему C?
1)Он создан специально для этой задачи (см. историю)
2)Очень прозрачен - и часто можно сказать что за код будет у тебя после компиляции (а занчит все будет работать так ткак вы хотите).
3)Чем сложнее компилятор, тем больше он вносит своих ошибок. это относиться и к C++ и к Delphy. Сам не раз сталкивался с ошибками, происхождение которых выясняется только после дизассемблирования откомпиленого кода. Пример точно не помню, но смысл решения был в перестановки строк (хотя и так все должно было работать).
4)Прост с линкованием. Имя в Obj = "_" + Имя в программе (но и это можно отключить). В C++ с этим сложнее, но тоже можно справиться. А вот с Delphy задолбаетесь.

Ну покрайней мере каркас пишите на C.
А если дело дойдет до оболочек и пр. тут уже ваш выбор, берите любоя язык, который может создавать объектные файлы в которых не содержиться вызовов операционной системы. Лично мой выбор - C++. Причем Delphy не подходит - я не нашел способа создать Obj-файл, так что бы в нем небыло системных вызовов

И еще один совет придерживайтесь стандартов:
- в том числе написание на существующем языке (хотя это противоречит моим старым взглядам)
- создание стандартных Obj-файлов
- линковка стандартными средствами
Просто чем больше вы их соблюдете тем больше шансов что под вашу ОС будете писать не только вы. Еще тут прозвучала идея поддержки POSIX - тоже не плохая идея. Если вы будете поддерживать какое-нибудь из распространненых API, то автоматическе получаете целый букет уже готовых приложений под вашу ОС :)


Причем всем Delphy-стам и тем кого я задел своей
критикой языков - у каждого из них своя ниша и свои задачи. а наша тема - это ниша C и Asm.
3
03 мая 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by QWERTYura

4)Прост с линкованием. Имя в Obj = "_" + Имя в программе (но и это можно отключить). В C++ с этим сложнее, но тоже можно справиться. А вот с Delphy задолбаетесь.


Сложнее - это десять символов:
extern "C"

13K
03 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
Цитата:
Originally posted by QWERTYura
C++ и к Delphy.
А вот с Delphy задолбаетесь.
Причем Delphy не подходит...
Причем всем Delphy-стам...



Не Delphy, а Delphi!!!

13K
03 мая 2006 года
Delphiprogramer
31 / / 06.04.2006
А как мне изменить подпись? Нужно "берево" изменить на "дерево". Один раз сделал опечатку - теперь не могу изменить...
4.7K
04 мая 2006 года
QWERTYura
14 / / 01.11.2003
Цитата:
Originally posted by Green
Сложнее - это десять символов:
extern "C"


Да - но тогда мы теряем многие прелести языка C++ для этой функции (например перегрузка функций или шаблоны).
Если взять крайность и все функции объявить как extern "C" от C++ практически ничего не останется
так что решить эту задачу грамотно посложнее чем просто написать extern "C".


за Delphi извиняюсь.

13K
05 июня 2006 года
ant-str
36 / / 01.04.2006
[QUOTE=QWERTYura]Объяснять как и спрашивать пока нечего.
Тему видели и если есть чем поделиться пишите.
Если нет, но тема интересна смотрите за обновлениями форума.



PS :!!!:
Только одна просьба не засоряйте форум и не пишите не по делу, например не надо делиться своими впечатлениями(как отрицательными так и положительными).[/QUOTE]
Свой компилятор C будешь создавать от полугода до нескольких лет.
Хочешь - делай!
Но. Есть два (как минимум) компилятора C, которые подходят для создания ядра операционной системы на C (работающих в среде WinNT). Это микрософтский и интеловский.
Привожу пример. start.c
void main()
{
char * p;
p= ( char * )0xB8000;
*p= 'A';
fl:
goto fl;
}
Компилируем: cl /c /O2 start.c
Получаем:
C6 05 00 80 0B 00 41 mov byte ptr ds:0B8000h, 41h
loc_0:
EB FE jmp short loc_0
Осталось написать(использовать существующий) компоновщик(он же линкер).
На написание простейшего линкера у меня ушло времени ровно 2 недели.
Вопросы есть?
350
06 июня 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=Delphiprogramer]Я, конечно, понимаю, что Ассемблер он и есть Ассемблер, как ни крути, но написать собственную ОС, не уступающую в надёжности Linux или новейшей Windows (только не 64-битную), мне очень хочется. Как работает комп, я очень хорошо знаю. Не хватает знаний Ассемблера. C - язык "корявый", и пока что-то он не учится. А вот Ассемблер можно было бы выучить только ради написания ядра ОС.[/QUOTE]
Если ты не знаешь Ассемблера, ты плохо знаешь, как работает комп.
Через пару дней я тебе дам названия и авторов парочки ОЧЕНЬ ХОРОШИХ книг по архитектуре процессора, и ты это поймешь.
И еще. Чуть выше по-моему ты писал, "дайте ссылку на ассемблер по Форточкам". Ассемблер - он и в африке ассемблер, не бывает ассемблера по Windows :) Любая WinAPI-функция может быть вызвана и с ассемблерного, и из C-кода, и из паскаля, это не зависит от языка.
Кстати, я этим делом в свое время немного увлекался, даже написал переход в защищенный режим процессора со страничной трансляцией (на ассемблере), а также свою файловую систему (на С++). Только эти две вещи заняли несколько месяцев.
350
06 июня 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=disasm]Предлагаю разделить форум на две части:
1. Поиск компилера, который не использует особенностей ОС
2. Собственно предложение идей и написание компилятора[/QUOTE]
Система разработки, не зависящая (по крайней мере, теоретически, концептуально) = C#. Точнее, .NET и C# как один из языков, поддерживаемых платформой .NET. Я, по правде говоря, сам не писал ничего на этой платформе. Знаю только, что нужно "всего лишь" реализовать .NET framework на другой операционке, и твоя программа (причем в скомпилированном виде) будет выполняться одинаково как на Windows, так и на этой операционке. Просто скомпилированный файл содержит промежуточный байт-код, который "на лету" платформой .NET окончательно компилируется в "родной" код операционки и железа. Так что хотите ОС- (и железо-)независимую систему, реализуйте .NET на других операционках :)
350
06 июня 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=Delphiprogramer]Вот-вот, в принципе о создании варианта языка C/C++ (зависит от конкретного контекста) радеет чуть ли не каждый программист. Можно вообще сделать довольно сложную штуку: язык программирования, полностью имитирующий естественный язык (в данном случае - русский). Правда, это выходит за рамки нашей задачи, но тем не менее. Ведь с чего всё начиналось? Программисты (тогда - просто энтузиасты) стремились создать язык, на котором человек мог бы на равных общаться с машиной, т.е. выполнял бы коммуникативную функцию. Что же, искусственные языки, которые существуют сейчас, такую функцию выполняют, но лично мне кажется, что Си слишком уж удалён от естественного языка. Нужно придумать что-нибудь попроще, интуитивнее, чем C, т.е. создать вариант этого языка.

Если этот вариант языка использовать в дальнейшем в качестве основного (и единственного) языка в системе, то это будет уникальный случай, когда русскоязычная операционная система основана на русскоязычном же языке программирования. Об этом можно подумать...[/QUOTE]
Насчет наиболее приближенного к естественному языку "общения" с машиной - это, пожалуй, SQL... Хотя некоторые команды выглядят все же не так естественно. В любом случае, SQL ближе к естественному, чем Pascal и тем более C/C++/C#.
Это так, лирическое отступление.
10
06 июня 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=cheburator]В любом случае, SQL ближе к естественному, чем Pascal и тем более C/C++/C#.[/QUOTE]
Близость к естественному языку - одна из задач, поставленных в свое время перед разработчиками SQL.
10K
30 июля 2006 года
DarkMagician
16 / / 30.08.2005
Дааа..... Тема стара как мир, правильно кто-то сказал: любой программист считает должным написать либо операционную систему, либо компилятор, либо вирус :):)
Я писал первые две вещи :):)
18K
01 августа 2006 года
ADMAX
4 / / 01.06.2006
Вообще, если кто интересуется, то скоро выпущу свою ОС (BiIOS называется). Если кому интересно, то обращайтесь [http]mailto://apsoffice@ya.ru[/http]
349
02 августа 2006 года
Phantom-84
656 / / 27.10.2005
Так ты здесь всем про нее и расскажи, да и саму ось можно здесь выложить!
9.5K
09 августа 2006 года
O01eg
33 / / 09.10.2005
GCC не использует особенностей осей.
Где-то здесь выкладывали ось Idioma.
273
09 августа 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=cheburator]Если ты не знаешь Ассемблера, ты плохо знаешь, как работает комп[/quote]
Довольно странная фраза. Можно знать Ассемблер, но не знать как работает комп, а можно и не знать его, но понимать работу компа. Вряд ли со знанием ассемблера можно объяснить, из чего состоят регистры, почему триггеры работают от переднего фронта напряжения, почему TT-триггеры, а не RS или D? Что такое КМОП и чем он отличается от МОП, а может отличие SRAM от DRAM. Эти вещи необходимы для понимания работы компьютера. Так что знание Ассемблера != знание компьютера.
Может я и не знаю Ассемблер на отлично, но могу объяснить устройство логических узлов компьютера вплоть до полевых транзисторов.
И здесь кто-то сказал, что нельзя писать ОС на C# - да пожалуйста, реализовываете CLR на ассемблере (в случае Java - пишем JVM) и всё. Дело в другом - чем ОС будет лучше/круче - в случае любительской реализации - ничем. Уже на этапе написания планировщика задач можно вешаться, и нужно иметь хорошую математическую подготовку для написания грамотного планировщика, а не так, что бы он после запуска двухсотого по счёту процесса помер вместе с ОС. По этому поводу отличная книга (бывшего противника Линуса) Э. Танденбаума "Современные операционные системы". В ней написаны ВСЕ проблемы и их решение на пути создания ОС.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог