Почитал серию статей lonesome. В самом начале не понравилась фраза :"Мы будем писать на си, потомучто совершенно очевидно, что ось написанная на ассемблере будет работать медленнее" Потом началось - давайте использовать Тасм, всё запишем на дискету, с неё и будем грузиться. Не пашет у меня тасм. Нет у меня флоппи-дисковода, эмулятор флоппи тоже не пашет почему-то. А хотелось бы покодить немножко, в образовательных целях. И - на ассемблере. Что делать? и потом - ну допустим написал я лучшую в мире ось - нельзя же вывалисть просто на всеобщее обозрение исходники - мол е-тесь сами если хотитя посмотреть. Например, колибри по незвестной пока причине я не смог установить - чего то не хватает, не грузится. Нужен установщик, который протестирует разделы, обборудование, предложит юзеру выбор ну и так далее. И всё это желательно с СD буду благодарен за наставление на путь истинный...
В порядке бреда: в почти любом комп. магазине ещё продаются такие ацкие девайсы как флоппи дисководы. Средняя цена - 200 р. Может, его просто надо купить? %) а вот что тасм не пашет - эт уже серьёзнее... с чего б ему, кстати, непахать?
А работать на виртуальной машине не подходит? В качестве дисковода используй образ диска (я создавал образ WinHex по реальной дискете, но можно и в инете кучу образов найти).
Xerx кличка "борщ" http://ru.wikipedia.org/wiki/Bochs http://bochs.sourceforge.net/ - дом ничего, нормальный. Правда я его несильно напрягаю.
_basmp_ Скачал, почитал. Потестим... Особо интересует скорость эмуляции SSE4.2 на моем Core Colo с SSE3.0. Очень хочется потестить...
Пробовал VirtualPC - заточен под установку гостевой винды, с другими осями проблемы, VirtualBox - под гостевой линукс, VMWare ...- полное г. Ни один из них не позволяет эмулировать флоппи - только подключить можно. Для нормальной работы им нужна ху-ва туча памяти, какие-то левые библитотеки и совершенное знание английского языка пользователем БИОС - это ж операционная система такая. Если писать установщик, то писать нужно в этой системе ... придётся начинать с биоса - где-то видел полное руководство - 60 метров
Exp10der вобще-то я не спец.. Вы про образы? (образы флопов назначаются флопам, исо -> CD итд. конфа прописывается в bochsrc.bxrc . дока и примеры есть) Или я не понял?
masm32 С флопом и тасмом разобраться можно -- это чисто технические проблемы, причём, как правило, небольшие. Правда, сейчас уже немало материнок, вообще не поддерживающих флоп (не имеющих контроллера) -- с такими, есно, будет облом. Работа на виртуальной машине не является панацеей от всех бед. Да, там можно проверять, можно отлаживать (в том же Bochs есть встроенный отладчик -- в любой момент можно глянуть, например, регистры нашей программы), но они сами достаточно глючные: нередки ситуации, когда программа без проблем работает на реальном железе, однако начисто отказывается на эмуляторе. В общем, как мне кажется, оптимальный выбор платформы для разработки заключается в следующем. Во-первых, мы должны иметь в наличии виртуальную машину типа Bochs или там QEMU, которая обладает возможностями отладки -- на ей выполняем основную массу прогонов разрабатываемой системы. Во-вторых, надо научить свой реальный комп загружаться с флэшки. Все современные машины такой способностью обладают, но я тут не помощник -- у меня основной комп старый, с флэшек грузиться не имеет, зато есть флоповод, поэтому мне разбираться как-то незачем было Но на форуме я где-то встречал описание, как сделать загрузочную флэшку, так что ищите и обрящете В-третьих, если разработка ведётся под Винду, то можно использовать, например, не старый и давно не поддерживаемый TASM, а MASM, только с другим компоновщиком ("линкером"), поскольку имеющийся в наличии не способен, например, создавать COM-файлы и вообще жутко ограничен в возможностях (заточен исключительно под Винду). Лично я пользуюсь Unilink. Что касается использования ЯВУ -- Си или ещё какого языка, не суть важно -- ИМХО, при осеписании это не лучшее решение. Заметной выгоды в скорости разработки или количестве ошибок не будет, поскольку задачи решаем низкоуровневые, "родные" как раз для ассемблера, а не для ЯВУ. Кроме того, при использовании ЯВУ нам придётся отказаться от использования его библиотеки (во всяком случае, её значительной части), поскольку она так или иначе привязана к оси, а мы ж делаем свою ось. Наконец, надо хорошо представлять, какой код генерит компилятор, какие у него особенности и т.п. -- иначе можно поиметь трудноуловимую ошибку. Что же касается собственно разрабатываемой оси, то в более-менее "коммерческом" (т.е. доведённом до стадии возможности реального использования, а не только баловства) продукте он, есно, должен быть. Однако ещё раньше нужно определиться, как ось будет работать с различным железом, т.е. как конфигурировать как это железо, так и саму себя (например, поиск и настройка устройств, загрузка соответствующих драйверов и т.п.). Только "танцуя" от особенностей оси, можно думать над установщиком.
Насчёт VirtualBox не знаю, но точно знаю, что VirtualPC, VMWare, Bochs, qemu позволяют подключить именно образ дискеты (файл .img) - покопайтесь в настройках. Это расплата за то, что они пытаются сделать как можно выше скорость эмуляции и исполнять часть кода напрямую - вот и устанавливаются дополнительные драйвера. (Это относится к VirtualPC, VMWare; для qemu есть специальный драйвер, который можно и не устанавливать; Bochs вообще никаких дополнительных библиотек не использует). Кроме того, нужны библиотеки/драйвера, если хочется предоставить доступ к сети (а все эмуляторы это делают). Ну а насчёт знания английского языка - это фундаментально... А Вы качали только исходники? Если да, то скачайте ещё и бинарники (для Windows-версии есть установщик, для Linux не знаю, но вроде "Linux binary RPM" в списке присутствует). Во всех известных мне эмуляторах есть глюки. Но только в Bochs их постоянно исправляют Существуют внешние флоппи-контроллеры, подключающиеся по USB. Так что и в этом случае, если хочется использовать дискеты, не всё потеряно
На тему виртуальных машин. Некоторое время юзал VirtualPC. Удобно было для MASM6.1, который у меня не получилось запустить под виндой. Забросил сразу же, как только потрогал контроллер прерываний. Он там либо эмулирется как то образно, либо какой то не стандартный. Пробовал VMWare - не пошел линукс, ни Red Hat, ни федора8 (причем не пошел именно на моей домашней тачке). BOCHS - написал с нуля и отладил микроядро. Такие баги как двойные эксепшены отлавливаются на ура. Полностью программный эмуль, единственный недостаток в сравнении с программно-аппаратными - низкое быстродействие.
У меня на Bochs Хрюша устанавливалась часов 20, наверное, в сумме, если не больше. Быстродействие эмуль показывал в районе 20 млн. операций в секунду. Есно, это по нынешним временам жутко медленно (теоретически пиковое быстродействие любого современного проца составляет несколько миллиардов оп/с), но для отладки собственной оси -- более чем достаточно. Правда, по словам знакомых осеписателей, у Боша регулярно глюки возникают, но они есть и в других виртуальных машинах. Поэтому надо просто иметь возможность всё проверять и на реальном железе. С ностальгией вспоминаю времена, когда компьютеры были большими и у них были пульты управления с кучей кнопочек и лампочек. Всегда можно было посмотреть, где что висит, содержимое регистров и памяти, выполнить программу по командам, поставить точку останова...
Barbos Ну не знаю, у меня не было проблем с установкой RedHat и Slackware под VMWare. Возможно дело было в каком-либо глюке, а не в несовместимости в целом. Там это даже настраивается в конфиге - bochs может и не отлавливать при необходимости. И в этом большой плюс - работа неподдерживаемых команд, хоть и медленно. Он бы еще GPU эмулировал хорошо
Когда-то, давным-давно (2 года назад), устанавливая прогу, я нажимал кнопки, отвечал на вопросы, смотрел на .. мигающие лампочки и ДУМАЛ - " какая это трудная штука - писать программы и устанавливать их на компутер". Это действительно непросто, мы привыкли и относимся к этому формально... НО очень быстро обнаружилось - проги не нуждаются в установке. винда при их запуске автоматом регистрирует классы окон, драйвера, если они ставятся и т.д. Возникло подозрение, что и операционки в установке также НЕ нуждаются - достаточно скинуть её в нужный раздел, сделать запись в буте и всё должно быть ок....пусть при первом запуске она тестирует обборудование, устанавливает драйвера из какого-то своего набора и всё это делается очень быстро...при последующих запусках - тест на отсутствие изменений в конфигурации компутера ... Читал как-то прикольную статью про твикер, который написал бывший сотрудник мелкософта, который чего-то там у них скоммуниздил, обнародовал и сбежал. Он якобы по ошибке выложил его. через очень короткое время сайт прикрыли, а мелкософт предупредил - кто будет его распостранять, будет расстрелян на месте преступления так сказать. Твикер позволял удалять IE и плэйер - полность без остатка, а при загрузке винды юзер не спевал моргнуть и открывался рабочий стол. Т.Е - то что мы видим при загрузке - это наколка того же типа, что и штырьковые антены, например, которые были у сотовых...( на самом деле у их всегда была рамочная антена на плате..) ну и так далее...
masm32 Прежде чем такое заявлять надо немного разбираться в вещах. Винда это не только IE и плэйер, есть куча других компонентов которые не меньше тормозят систему. А во время загрузки система выполняет кучу дополнительных действий, часть которых действительно можно отключить, но отнюдь не все! Реально ОС не может запускатся быстрее чем за 15 секунд, даже на самом мощном оборудовании платформы х86. Инициализация оборудования требует время - не получится все сделать мгновенно! Еще надо иметь ввиду что BIOS 10-15 секунд тоже затрачивает. Итого имеем около 30 секунд минимально и это если не проводится упорядочивание реестра, очистка свопа и др. полезных и бесполезных действий.
masm32 Бред. Твикер о котором ты говоришь это vLite и было это для Win9x и было это твикером установоч- ных файлов винды. IE интегрирован в винду полностью и без вариантов. Весь её шел держится на общих с браузером дллах. Правильно настроенная и поддерживаемая в порядке винда грузится максимум за 20 секунд, минимум за 10 и здесь все упирается не в IE. В исходном тексте винды можно найти достаточно мест на инициализации выполняющих специальные задержки времени, но это сделано не от фонаря а исходя из соображений архитектуры ос.