как в long mode(x64) сделать эмуляцию v86

Тема в разделе "WASM.OS.DEVEL", создана пользователем abcd008, 20 июн 2010.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    народ подскажите как в x64 можно сделать v86 режим.
    ведь он поддерживается только в x32.

    у меня есть предложение перевести проц обратно в x32 и там уже в v86. но мне кажется это будет очень долго.
    как еще можно это сделать. я хочу сделать DOS эмулятор для своей x64 системы
     
  2. Vic3Dexe

    Vic3Dexe New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2009
    Сообщения:
    53
    Вот и ответ.
    Если не хочется прыгать в РМ, то, видимо, только писать что-то наподобие vmware/qemu/бош и иже с ними в части исполнения RM-кода.
     
  3. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а если прыгать, это сильно затормозит проц?
     
  4. Vic3Dexe

    Vic3Dexe New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2009
    Сообщения:
    53
    Ну это смотря как сделать. Насколько я понимаю, обработчику v86 нужен 32-битный код в пределах первых 4 гиг. Следовательно, либо писать целую х32 подсистему, которая будет дублировать основную х64 в части обращений к ресурсам машины, либо на _каждый_ чих 16-битного кода в сторону этих ресурсов дергаться обратно в лонг.

    Во 2 случае, конечно, тормоза будут, я думаю, приличные. А 1 случай - бред сам по себе. Ну и с другой стороны, как вы будете выполнять код ДОС в окружении своей оси?
    Мое имхо - смысла это не имеет, лучше тот же бош или qemu под себя портировать.
     
  5. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я полностью согласен. только тогда лучше dosbox. но у меня с Си плоховато. такбы я уже все под себя подмял.