Уважаемые разработчики, подскажите пожалуйста какие инструменты выбрать для написании ОС? Я раньше никогда не сталкивался с этой проблемой, и вот наконецто пришлось... Что нужно: - Виртуальная машина(ну тут выбор маленький,VMWare, VirtualPC, Boch). Хотелось бы найти что-то с встроенным дебаггером, с возможностью просматривать регистры и режимом пошаговго выполнения.... - Асм транслятор - ну тут вопрос не стоит, FASM - вполне подходит. - Теперь нужен ЯВУ - честно, не знаю ... требования - чистный 32-64 bit бинари на выходе, язык С++ или Pascal, удобный IDE Если кто знает что лучше выбрать, подскажите, буду очень блогадарен.
dbss, извиняюсь за грубость, но, по-моему, не стоит тебе ОСь писать. Ты слишком ценишь комфорт. Зачем, например, встроенный пошаговый отладчик в виртуальной машине? Если ты понимаешь, как должна работать программа, то пошаговая отладка не нужна, а если не понимаешь, то все равно ничего хорошего у тебя не выйдет. Если же нужно выловить какой-нибудь экзотический глюк, то можно встроить простенький отладчик (с предустановленными брекпойнтами и дампом регистров на экран) прямо в ОСь. Так будет гораздо полезнее и универсальнее - ОСь надо будет время от времени запускать на реальном железе (не стоит целиком полагаться на эмуляторы). Или вот ЯВУ - зачем они нужны? На первых порах лучше писать ОСь на чистом ассемблере, а потом, если проект будет успешно развиваться, ты сам сможешь написать для своей ОСи и компилятор (например, на основе gcc), и IDE. Насчет "FASM - вполне подходит". Писать нужно на том ассемблере, которым ты уже давно пользуешься и который тебе хорошо знаком. А то пересядешь с TASM-а на FASM (или наоборот), напишешь по старой памяти mov eax,SomeVar и будешь долго гадать, почему программа глючит (в большом проекте такая ошибка непременно появится). P. S. И на всякий случай: если ты пишешь на ассемблере всего пару месяцев, то тебе рано браться за ОСь. Потерпи еще несколько лет...
ava, ну тут все не совсем так. На ассемблере я действительно не долго и не много пишу, ответ прост: время создания проэкта очень важный параметр, поэтому я использую мощьные и удобные инструменты для создания своих проэктов (я занимаюсь разработкой бизнесс-приложений) а ассемблер использую в узких местах как вставки, не более; но тут другая проблема: я хочу написать ось, свою и пока чисто для себя, и я считаю что если я ее начну писать исключительно на асме то это гиблое дло, слишком долго. Мне не нужна скорость выполнения, я отталкиваюсь от того что мощьность моего процессора стремиться в бесконечность, но вот мое время исключительно стремиться к нулю, поэтому ЯВУ - для меня единственный выход. Конечно, само ядро (менеджер памяти, планировщик и т.д ) я буду писать на асме, тут просто по другому не катит. Но ведь нужно ж еще написать пару-тройку сервисов, командный процессор... это я не собираюсь писать на асме - слишком не долго и себя не оправдывает. А вот на счет виртуальной машины, ты не прав, это очень оправданное средство, а если в нем будет мощьный дебаггер - то тогда ему вообще цены не сложишь!
dbss, а с чего это тебе вдруг захотелось написать ОСь? Какую цель ты преследуешь и что хочешь получить в итоге? "Научиться программировать на ассемблере" и подобные цели не подходят. Это все равно, что с головой нырнуть в прорубь, чтобы научиться плавать и заодно закалить организм. Ничего хорошего из этого не выйдет.
ava, все просто: 1. Дипломная работа 2. Попытка создать свой мир. Разве этого мало? И не надо говорить что это скоро попустит....
Можно попробовать Fresh. Ето IDE с FASM внутри, которое можно настроить чтобы работало директно с Bosch. Я так его изпользовал чтобы компилировать и изполнять в Bosch ОСи из конкурса на flatassembler.net (512bytes OS). Конечно визуальные возможности IDE изпользовать нельзя, но и редактор не плох, а есть и управление проектов, автоматическое завершение и другие удобные функции.
Если смотреть на твой подход мало времени и т.д. То я тебе посоветую даже и не начинать писать ОС ! Т.к. - это по определению займет МНОГО времени и сил. А так же кучу нервов. А если учесть изначально некомфортную среду и сложность отладки ... то ...
asmlamo, Хлопцы да не переживайте ж так за меня Иногда правельность выбора проверяеться тем чтобы сделать его еще раз... [color=]<this is matrix>[/color]
dbss, я никак не пойму: если ты витаешь в облаках бизнес-приложений, то с какого бодуна ты решил спуститься на землю системного программирования, да еще в такой сложной области, как создание ОС??? И насчет попытки создать свой мир. К чему плодить уродцев? Их уже и так слишком много.
ava....есть работа, а есть хобби, так вот ОС это хобби...+диплом, а работа останеться работой. ... а я ведь просто, спросил про инструменты...
диплом напесать ось? не легче ли содрать? если писать как хобби так уж лучше сперва заботать теорию? мне например для того чтоб с 0 разработать орхетектуру оси пришлось читать умные книжки и дамать башкой около 2х лет. у вас я так понял столько времени нету. потому стоит заюзать готовые кусманы из oskit есть такое в инете - типа готовый код для ядра. бери и прилепляй что хошь
C++ ЯВУ- ООП вещь конечно замечательная(вопрос вкуса) но почему забыли про С (без +). А ведь он специально создавался для написания операционки. Результат все можем лицезреть и это не только Windows. Кстати, С часто называют ассемблером высокого уровня(с чем я полностью согласен).
Возникла проблема. Хочу писать собственную Ось. Со своим форматом экзешников. После некоторых обдумываний меня заломало писать сначала собственный ассемблер, а потом и линкер. Короче, постановка задачи: как без особого напряга получить бинарники секций, причём без всяких там таблиц перемещений, а с уже откорректироваными адресами, причём не так, как положено по PE-формату (выравнивание, заголовки и т. п.), а так как мне надо. Что-то очень не хочется ковырять coff .obj файлы и делать всё ручками (либо писать прогу для этого)
Mescalito Если есть желание "писать собственную Ось" да ещё "Со своим форматом экзешников" то собственноручная реализация программной их поддержки - неотъемлемая часть этой деятельности. Никуда от неё не деться. Разве что взять другую готовую ось. Или вообще не писать ось. Или писать ось без экзешников. Других вариантов не знаю.
А смысл мне писать собственный компилятор? Или копировать чужой код? Если у меня всё получится - тогда напишу ассемблер (благо исходники некоторых можно достать) под свою систему. А сейчас мне просто хочется не особо напрягая себя левой работой приступить к написанию ядра/загрузчика и т. п. Всё равно, пока у меня нет ни строчки кода новой системы (кроме чужих ядер из которых кое-что может быть можно будет поаимствовать) мне не нужен собственный компилятор. Я всё-таки не совсем программист и асм - это хобби, а не хлеб. Эх... Скорее всего прийдётся писать линкер пересобирающий PE так, как мне надо. Ещё фигня - что-то не могу найти нормального описания coff .obj. Везде только coff pe.
За описаловку спасибо, правда это вообще-то omf, а мне бы coff, но всё равно спасибо. Пожалуй, прийдётся забыть синтаксис masm (знакомый ещё по Z-80) и приняться за fasm, делать бинарники им. А db - это само собой разумеется. P.S.: как среда разработки похоже что fasm+notepad+hiew рулят