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

Ваш аккаунт

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

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

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

ОС на C

8.1K
17 июля 2005 года
a017_
11 / / 10.04.2005
Все знают что LInux написан на Сях, как это можно осуществить, какой компилятор юзать???
Заранее благодарю
3.8K
18 июля 2005 года
Supervisor
158 / / 29.05.2005
Цитата:
Originally posted by a017_
как это можно осуществить


Как написать ОС?? ;D

Цитата:
какой компилятор юзать???


Какой компилятор больше нравится - такой и используй. Я рекомендую gcc.

2
18 июля 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by a017_
Все знают что LInux написан на Сях, как это можно осуществить, какой компилятор юзать???
Заранее благодарю


ты хочешь написать Линукс? :D

279
18 июля 2005 года
bave
456 / / 07.03.2004
А что ты хочешь осуществить - то?
Написать свою операционку?!?
Задавая такие вопросы? - Ха - ха...
447
22 июля 2005 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by a017_
Все знают что LInux написан на Сях, как это можно осуществить, какой компилятор юзать???
Заранее благодарю


Клёво. Если ты нашёл уже нужный компилер то считай что пол дела сделано :D

991
27 июля 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by a017_
Все знают что LInux написан на Сях, как это можно осуществить, какой компилятор юзать???
Заранее благодарю



Если хочешь написать ось на С - ях от начала и до конца, сначала напиши свой компилятор =). Если хочешь всетаки воспользоваться уже готовым компиллером, то тебе надо найти такой, с которым поставляются исходники start-up кода. Правишь исходники, выкидываешь от туда все, что связано с вызовом функций DOS, компилишь их, и пишешь ось.
И не забудь поиграться с опциями компиллера (не подключать стандартные библиотеки)
Исходники есть по крайней мере в Borland C++ 3.1, и в Watcom (OpenWatcom) C/C++. На счет других компиллеров не проверял.

ЗЫ: Только первичный загрузчик тебе все равно придется писать на Ассемблере...

3
27 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Zenhipster
Если хочешь написать ось на С - ях от начала и до конца, сначала напиши свой компилятор =).


А перед этим собери свой компьютер, но для этого создай пару миллиардов транзисторов, что не обойдется без знания химии... :D :D

Цитата:
Originally posted by Zenhipster
Если хочешь всетаки воспользоваться уже готовым компиллером, то тебе надо найти такой, с которым поставляются исходники start-up кода.


Или просто посмотри опции любого линкера на предмет определения стартовой точки, например, для VC++ это /ENTRY

991
27 июля 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by Green
А перед этим собери свой компьютер, но для этого создай пару миллиардов транзисторов, что не обойдется без знания химии... :D :D


=)))
Для начало надо найти кремниевое месторождение, и развернуть там рудник.

Цитата:

Или просто посмотри опции любого линкера на предмет определения стартовой точки, например, для VC++ это /ENTRY



Даже если найти эти опции, start-up код все равно попытается вызвать пару-тройку системных функций.

ЗЫ: VC++ компилит под windows.

3
27 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Zenhipster

Даже если найти эти опции, start-up код все равно попытается вызвать пару-тройку системных функций.


Кто тебе это сказал?
Ну отключи start-up теми же опциями.

Цитата:
Originally posted by Zenhipster

ЗЫ: VC++ компилит под windows.


А это кто тебе сказал?
И что значит "компилит под windows" ?

- Почему люди не летают?
- По воздуху!

255
27 июля 2005 года
Dart Bobr
1.4K / / 09.04.2004
Насколько мне известно(после прочтения всяких книжек) Вижуал С вообще компилирует не в машинный код а в промежуточный язык. А потом этот код уже выполняется специальными JIT-трансляторами.(если я ничего не напутал....)

А компилировать "под ДОС" или "под Виндовс" это глупость. Можна только компилировать в машинный код.
991
28 июля 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by Green
Кто тебе это сказал?
Ну отключи start-up теми же опциями.


Я не имел в виду конкретно vcpp. Может там
и есть такая опция, в Watcom - e например такой
опции нет.

Цитата:

И что значит "компилит под windows" ?



Ну, если писать на vcpp 32-битный модуль для OC,
тагда да. А если надо будет написать модуль под
какую нибудь экзотическую модель памяти, то будет облом. Хотя может в vcpp и на этот случай предусмотрены какие-нить опции?

"компилит под windows" - создает код,
заточенный под windows, под модель памяти
windows, в том же старт-апе вызывает системные
функции windows.
-------------------------------------
Про JIT, помоему фантастика. Есть ссылка?

3
28 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Dart Bobr
Насколько мне известно(после прочтения всяких книжек) Вижуал С вообще компилирует не в машинный код а в промежуточный язык. А потом этот код уже выполняется специальными JIT-трансляторами.(если я ничего не напутал....)


Неверно. Компиляторы С (во всяком случае большинство ныне существующих) создают объектные файлы, обычно COFF-формата.

Цитата:
Originally posted by Zenhipster

Я не имел в виду конкретно vcpp. Может там
и есть такая опция, в Watcom - e например такой
опции нет.


Да ну?
А как же опции NODEFAULTLIBS и START ?

Цитата:
3.55 The NODEFAULTLIBS Option
Special object module records that specify default libraries are placed in object files generated
by Watcom compilers.



Цитата:
3.85 The START Option
The format of the "START" option is as follows.
OPTION START=symbol_name
where description:
symbol_name specifies the name of the procedure where execution begins.
For the Netware 386 executable format, the default name of the start procedure is "_Prelude".



Цитата:
Originally posted by Zenhipster

"компилит под windows" - создает код,
заточенный под windows, под модель памяти
windows, в том же старт-апе вызывает системные
функции windows.


Компилятор создает код "заточенный" под определенный процессор, а не ОС.
Остальное - дело дефолтных библиотек, подключаемых линкером.

255
28 июля 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Green
Неверно. Компиляторы С (во всяком случае большинство ныне существующих) создают объектные файлы, обычно COFF-формата.


Хм... У меня в руках книга "Visual C++ .NET Библия пользователя" - Том Арчер. Стр 1112:
"Возможно кого-то удивит тот факт, что в результате компиляции приложений .NET на платформе Windows получается не стандартный исполняемый файл в формате переносимых исполняемых файлов(PE - Portable Executable format files), а некоторый код, внешне напоминающий ассемблер. Это исходный код для промежуточного языка от Microsoft (IL или MSIL - Microsoft Intermediate Language)..."
И еще на той же странице:
" Как можно заметить на рис.41.2, процесс между компиляцией исходного кода и моментом, когда среда выполнения .NET распознает его и корректно отработает, состоит из нескольких этапов. Ниже представлено краткое описание этих этапов:
1. При помощи одного из языков програмирования среды .NET (Visual C++,C#,Visual Basic и т. д.) создается исходный код.
2. Исходный код компилируется при помощи соответствующего компилятора .NET.
3. Компилятор .NET формирует код MSIL и декларацию(manifest), размещая их в предназначеной только для чтения части файла *.exe. Этот файл имеет стандартный заголовок исполняемых файлов, поэтому Windows опознает его как приложение и загрузит.
4. Пока не произошло ничего необычного, однако следует отметить один важный момент: когда компилятор формирует код MSIL, он импортирует также из соответствующей библиотеки DLL среды выполнения .NET(mscoree.dll)функцию по имени _CorExeMain.
5. При выполнении приложений операционная система загружает исполняемый файл PE, а также все связанные с ним библиотеки DLL. Сюда входит и библиотека mscoree.dll, которая експортирует функцию _CorExeMain.
6. Затем система загрузки приложений Windows переходит к точке входа внутри исполняемого файла, созданого компилятором .NET. Это - стандартный подход приложений Windows. Однако, поскольку операционная система Windows не в состоянии выполнить код MSIL, эта точка входа является всего лишь командой перехода на функцию _CorExeMain.
7. Функция _CorExeMain начинает выполнять код MSIL, размещенный в исполняемом файле. Однако, в связи с тем, что код MSIL нельзя выполнить непосредственно(поскольку это неисполняемый код), среда выполнения компилирует его при помощи оперативного (just-in-time) компилятора (также известен под названием JITter, или JIT-компилятор) в команды процессора. Как упоминалось ранее, оперативная компиляция выполняется только при первом вызове методов программы. Откомпилированый исполняемый код сохраняется в памяти вашего компьютера и подвергается перекомпиляции только в том случае, если в исходный код внесены какие-то изменения."

Фу-у-у... Задолбался по клаве стучать...

3
28 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Dart Bobr
Хм... У меня в руках книга "Visual C++ .NET Библия пользователя" - Том Арчер. Стр 1112:
"Возможно кого-то удивит тот факт, что в результате компиляции приложений .NET на платформе Windows получается не стандартный исполняемый файл в формате переносимых исполняемых файлов(PE - Portable Executable format files), а некоторый код, внешне напоминающий ассемблер. Это исходный код для промежуточного языка от Microsoft (IL или MSIL - Microsoft Intermediate Language)..."
И еще на той же странице:
" Как можно заметить на рис.41.2, процесс между компиляцией исходного кода и моментом, когда среда выполнения .NET распознает его и корректно отработает, состоит из нескольких этапов. Ниже представлено краткое описание этих этапов:
1. При помощи одного из языков програмирования среды .NET (Visual C++,C#,Visual Basic и т. д.) создается исходный код.
2. Исходный код компилируется при помощи соответствующего компилятора .NET.
3. Компилятор .NET формирует код MSIL и декларацию(manifest), размещая их в предназначеной только для чтения части файла *.exe. Этот файл имеет стандартный заголовок исполняемых файлов, поэтому Windows опознает его как приложение и загрузит.
4. Пока не произошло ничего необычного, однако следует отметить один важный момент: когда компилятор формирует код MSIL, он импортирует также из соответствующей библиотеки DLL среды выполнения .NET(mscoree.dll)функцию по имени _CorExeMain.
5. При выполнении приложений операционная система загружает исполняемый файл PE, а также все связанные с ним библиотеки DLL. Сюда входит и библиотека mscoree.dll, которая експортирует функцию _CorExeMain.
6. Затем система загрузки приложений Windows переходит к точке входа внутри исполняемого файла, созданого компилятором .NET. Это - стандартный подход приложений Windows. Однако, поскольку операционная система Windows не в состоянии выполнить код MSIL, эта точка входа является всего лишь командой перехода на функцию _CorExeMain.
7. Функция _CorExeMain начинает выполнять код MSIL, размещенный в исполняемом файле. Однако, в связи с тем, что код MSIL нельзя выполнить непосредственно(поскольку это неисполняемый код), среда выполнения компилирует его при помощи оперативного (just-in-time) компилятора (также известен под названием JITter, или JIT-компилятор) в команды процессора. Как упоминалось ранее, оперативная компиляция выполняется только при первом вызове методов программы. Откомпилированый исполняемый код сохраняется в памяти вашего компьютера и подвергается перекомпиляции только в том случае, если в исходный код внесены какие-то изменения."

Фу-у-у... Задолбался по клаве стучать...



Ключевое слово ".NET" :)
C/С++ не имеет к .NET никакого отношения.

991
28 июля 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:

Да ну?
А как же опции NODEFAULTLIBS и START ?


- Опаньки! И в правду, есть =)) А я то и не знал.
Ну, буду теперь знать.

Цитата:

Компилятор создает код "заточенный" под определенный процессор, а не ОС.
Остальное - дело дефолтных библиотек, подключаемых линкером.



- А как же модели памяти? VC++ можно настроить на компиляцию под любую модель памяти?

3
29 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Zenhipster
- А как же модели памяти? VC++ можно настроить на компиляцию под любую модель памяти?


Что именно ты подразумеваешь под "моделью памяти"?
Tiny, small, medium, compact, large, huge, flat имеют отношение к компилятору и процессору, а не к ОС.
Что же касается разбивки адресного пространства на разделы, файл подкачки и т.п. архитектурные особенности ОС, то компилятору до этого нет дела, это ведение соотв. библиотек.

255
29 июля 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Green
Ключевое слово ".NET" :)
C/С++ не имеет к .NET никакого отношения.


Седьмой имеет самое прямое отношение.
ЗЫ. На шестом я почти никогда и не програмил...

2Zenhipster
Код получается практически одинаковый под любую модель памяти. Он может отличаться, только для 32-разрядной и 16-разрядной модели памяти, но различия там очень маленькие и интуитивно понятные к тому же они присутствуют из сображений совместимости с более ранними верссиями процов.

3
29 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Dart Bobr
Седьмой имеет самое прямое отношение.
ЗЫ. На шестом я почти никогда и не програмил...


Не путай компилятор и IDE.
Компилятор языка С++ не имеет никакого отношения к .NET даже в седьмой версии студии.

991
29 июля 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by Dart Bobr
Седьмой имеет самое прямое отношение.
ЗЫ. На шестом я почти никогда и не програмил...

2Zenhipster
Код получается практически одинаковый под любую модель памяти. Он может отличаться, только для 32-разрядной и 16-разрядной модели памяти, но различия там очень маленькие и интуитивно понятные к тому же они присутствуют из сображений совместимости с более ранними верссиями процов.



Ага, только в одном случае адреса 16-битные, в другом 32-битные, в третьем линейная адресация с лимитом сегментов 4Гб, в четвертом для доступа к памяти используется селектор:смещение.
А еще страничная адресация.

3
29 июля 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Zenhipster
Ага, только в одном случае адреса 16-битные, в другом 32-битные, в третьем линейная адресация с лимитом сегментов 4Гб, в четвертом для доступа к памяти используется селектор:смещение.
А еще страничная адресация.



Но к ОС это не иммет отношения.

260
30 июля 2005 года
Ramon
1.1K / / 16.08.2003
NO COMMENTS.

Засилие дот нета и так называемого веб программинга. Мало кто уже и в моделях памяти и генерации кода шарит.:{
255
30 июля 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Zenhipster
Ага, только в одном случае адреса 16-битные, в другом 32-битные, в третьем линейная адресация с лимитом сегментов 4Гб, в четвертом для доступа к памяти используется селектор:смещение.
А еще страничная адресация.


Да, но вот только это все ложится на плечи програмиста, а не компилятора.... А если таких разлчий нет, то и компилятор выдает один и тот же код под Windows, Linux и другие ОСи...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог