имеется ввиду 16 битного. вот com грузится как: когда мы его нашли,резервируем какое то кол-во памяти, устанавливаем смещение 0x100 ( потому что все КОМы работают по нему) и делаем длинный retf на адрес. как экзэшник- что то туплю, по идее сверяем сигнатуру MZ, а потом надо установить адрес imagebase ведь оттуда начинается выполнение,но еще есть же релоки-значит как то надо настраивать адреса.кто может подскажите)
бля я ослеп. ты про NTVDM или realmode и мсддос? (если што - гугли по этим понятиям, я под дос кодил давно когда асм тока изучал - автору книги мудиле отдельный респект что виндовому асму он решил обучать с этой хрени)
реальный режим, голый. там не имеет значение ОС потому что ни прерывания , ни функции не используются. пока что нашел только вот: Code: mov ds,ax add ax,[ds:0x08] ; <--- imagebase mov cx,[ds:0x06]; <--- reloc items mov bx,[ds:0x18]; <--- reloc table (указатель) как настроить relocations пока еще не понял
да вот так легко и просто.например ничего не использовать кроме прерываний микросхемы bios, вполне можно грузить exe такого формата.http://faydoc.tripod.com/formats/exe-DOS.htm и по твоему как дос писали?)
формат PE это формат принимаемый ос - дос или виндов, по правилам которого ос загружает модуль, а вообще голый режим без всего как ты упомянул - никакого формата не требует, как биос передал управление в бутдевайс - так и хуеверть
ты не поняв. берем exe (пишем на асме,паскале,с) отключив все либы (т.е. доступны ток прерывания биос). кидаем в корень.находим.выделяем память,устанавливаем imagebase и релоки по адресам из той схемы и входим в entrypoint откуда и исполняем код.как то так вот.
сечешь. мое извращение- запустить этим лодырем самописный текстовый морской бой)) а потом применить для загрузки командного процессора с основными ф-ями т.н. ОС )))
Я хоть и перечитал, но все равно не понял зачем тебе это надо Нативный код можно и через тотже FASM скомпилить... По поводу твоих первоначальных вопросов типа как грузить, как делать релоки, гугли PE Loader. И Slesh здесь публиковал свой загрузчик dll (что-то типа скрытая загрузка dll), там весь код есть (нового все равно ничего не придумаешь).
микроядро для своей говно оси.практически единственное отличие в том что размер >64 кб поддерживается.
теперь меня интересует как создать файл,есть fs fat12 и прерывания bios. предполагаю что надо работать на прямую с жд,хотя чувствую что ошибаюсь.
Думаю ты не ошибаешься. Напрямую надо работать с ЖД, так как 25 и 26 это функции системы DOS. Насколько я помню можно ведь свои прерывания добавлять (но это опятьже в системе DOS вроде как), тобишь повесить свои микропрограммы, которые используют 13 прерывание.
даже не знаю как подступится к делу. судя по описанию ФС надо писать в секторы которые объединяются в кластеры,но как допустим при выводе каталога (пусть даже как dos 1.0 используем только корневую папку) представить что файл существует.
Всмысле как? FAT это таблица, по ней и определяй какие файлы есть и где расположены, сколько места они занимают и с какого сектора в каком кластере размещаются. Тебе все придется руками организовать все операции с файлами - создание, открытие, чтение, запись, возможно поиск... удаление (из таблицы FAT)...