создайте эльфийский файл реального режима и свяжите его с моим ядром

Я пытаюсь включить графический режим в VGA (в ядре нашего курса - JOS).
Я обнаружил, что для этого мне нужно вызвать прерывание 10h из реального режима (8086). Однако переход в реальный режим после перехода в защищенный режим является проблемой, поэтому я пытаюсь использовать режим V86.
Я обнаружил, что для использования режима V86 мне нужно запустить его как задачу, поэтому теперь я Я работаю над добавлением поддержки процессов V86.
Мое ядро ​​ограничено и не содержит надлежащей файловой системы, поэтому, чтобы загрузить код реального режима, я пытаюсь скомпилировать и скомпоновать все это вместе (ядро и v86 задача).

Так кто-нибудь знает, как создать Эльфа для реального режима?
Кроме того, если кто-нибудь может дать мне совет, как связать его с ядром, было бы здорово!

Спасибо,
Шай.


person buc030    schedule 11.06.2013    source источник


Ответы (1)


Это должен быть быстрый ответ, но:

Я не знаю, как/если вы можете напрямую связать код реального режима и защищенного режима. Тем не менее, есть две вещи, которые вы можете попробовать:

  1. Вы можете скомпилировать свой код реального режима в плоский двоичный файл (удалив все метаданные) и упаковать его вместе с ядром (возможно, добавив его в конец образа ядра или каким-либо другим способом). Затем вам нужно будет найти его во время выполнения, загрузить в память, а затем jmp/вызвать его. Поскольку я ничего не знаю о том, как упаковывается или запускается ваше ядро, это может быть довольно сложно.
  2. Непосредственно добавьте машинный код в файл сборки, который вы связываете с ядром. У меня нет реального примера, но это может выглядеть примерно так:

    EnterRealMode:
        db    0b8h, 00h, 00h            ; mov ax, 00h
        db    0fe, 0ebh                 ; jmp $
        etc.
    

Кроме того, вы, вероятно, захотите перейти в реальный режим вместо использования виртуального режима 8086. Отображение памяти и прерывания для вызова BIOS, вероятно, будут шаткими, если вы этого не сделаете. Советы по переходу в реальный режим.< /а>

person Rose Lynn Embry    schedule 16.07.2013