Компилятор, генерирующий чистый 32-х разрядный код

Тема в разделе "WASM.BEGINNERS", создана пользователем GLebaTi, 22 июн 2010.

  1. GLebaTi

    GLebaTi New Member

    Публикаций:
    0
    Регистрация:
    8 май 2010
    Сообщения:
    10
    Подскажите пожалуйста компилятор, генерирующий чистый 32-й код.
    Хочу написать загрузчик ОС. На масм32 можно? Если да, то как скомпилировать такой загрузчик ?
     
  2. GLebaTi

    GLebaTi New Member

    Публикаций:
    0
    Регистрация:
    8 май 2010
    Сообщения:
    10
    А если на масме никак, то как это можно сделать на насме ?
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    А ничего, что БИОС считает, что загрузчик -- 16-разрядный код, и передаёт ему управление в реальном режиме процессора?
     
  4. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    GLebaTi
    конечно можно - пишите - только загрузчики они 16 битные на какое то количество процентов в связи с обратной совместимостью
     
  5. GLebaTi

    GLebaTi New Member

    Публикаций:
    0
    Регистрация:
    8 май 2010
    Сообщения:
    10
    1) обратная совместимость с чем?
    2)
    C:\MASM611\BIN\MASM.EXE 1.asm
    C:\MASM611\BINR\LINK.EXE 1.obj /t
    получается ехе файл. Его содержимое я записываю в первый сектор.
    Всё правильно ?
     
  6. GLebaTi

    GLebaTi New Member

    Публикаций:
    0
    Регистрация:
    8 май 2010
    Сообщения:
    10
    вернее сом
     
  7. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    GLebaTi
    1) обратная совместимость с досом - в теории на любом компе должна загрузиться дос - на то что она разделы нтфс не увидит насрать
    2) насколько я видел в исходниках обычно с помощью масма собирается exe который продуцирует бинарник с загрузчиком и уж его ты диск эдитом суешь в сектор, бывает что этот exe сам пишет этот бинарник в первый сетор
     
  8. GLebaTi

    GLebaTi New Member

    Публикаций:
    0
    Регистрация:
    8 май 2010
    Сообщения:
    10
    спасибо!)
     
  9. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    GLebaTi,

    Учти что загрузчик будет находиться (и стартовать) с 0:7C00.
     
  10. progma137

    progma137 Виктор Франкенштейн

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    18
    Адрес:
    Кривой Рог
    есть на TASMе написаная ос GlukOS. там по пунктам написано что да как.
    но это на случай если вы не знаете как делать.
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    GLebaTi
    А бывает "грязный" 32-битный код?
     
  12. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Посмотрите на исходники загрузчика, например, ОС Singularity (http://singularity.codeplex.com/).
    Папка base/boot/SingLdrPC.

    Там 16-битная точка входа реализована на асме. Здесь же и происходит
    переключение в защищенный режим и подготовка 32-битного загрузчика,
    который написан на си и представляет собор PE EXE.

    Если вы можете работать в защищенном режиме и знаете структуру PE-файла,
    то что-то пободное не составит труда реализовать.

    Кстати, так же реализован загрузчик windows.

    Что касается linux - там применяются всякие GRUB-ы, lilo и прочие сторонние загрузчики.
    А вот linux первой версии грузился прямо boot-сектором по адресу 0x1000:0x0000.
    В силу сложности файловых систем и объемности ядра, этом способ счейчас не работает :).